-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft Systeme und Verfahren zum Generieren
einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) für ein gegebenes Computersystem.
Die ausführliche
(verbose) Hardware-Identifizierung (VHWID) kann verwendet werden,
um die Nutzung von Software an dem gegebenen Computersystem in Abhängigkeit
von dem Umfang der Hardware-Änderungen
an dem Computersystem zu steuern.
-
HINTERGRUND DER ERFINDUNG
-
In
den vergangenen Jahren sind beachtliche Anstrengungen unternommen
worden, um die ungesetzliche Nutzung von Computer-Software zu unterbinden
oder zu minimieren. Aufgrund ihrer Reproduzierbarkeit und ihrer
leichten Verteilung sind Piraterie von Computer-Software und illegale
Nutzung von Computer-Software über
den vereinbarten Lizenzumfang hinaus häufige Erscheinungen, die den
Software-Produzenten schaden.
-
Es
sind Verfahren in dem Bemühen
entwickelt worden, die Erscheinungen von Computer-Software-Piraterie
und illegaler Nutzung von Computer-Software über den vereinbarten Lizenzumfang
hinaus zu reduzieren. Solche Verfahren verursachen jedoch häufig Probleme
für rechtmäßige Käufer von
Software und rechtmäßige Benutzer
in Form von Unannehmlichkeiten für
den Verbraucher. Ein Benutzer, der zum Beispiel seinen Computer
aufgerüstet
hat, muss zum Beispiel in der Lage sein, das Software-Produkt legitim auf
dem aufgerüsteten
Gerät neu
zu installieren. Gegenwärtig
verfügbare
Verfahren können
jedoch (i) entweder nicht ermöglichen,
dass die Software installiert wird, oder (ii) den Benutzer (der
nunmehr unzufrieden ist) zwingen, den Hersteller der Software um
Unterstützung
zu bitten.
-
Demzufolge
besteht nach wie vor Bedarf an verbesserten Technologielösungen für Piraterie
und illegale Nutzung bei gleichzeitiger Anerkennung und Berücksichtigung
der Bedürfnisse
und Methoden der legitimen Käufer
und Benutzer von Software.
-
EP 0 679 980 A1 beschreibt
ein Verfahren und eine Vorrichtung, die Softwareerprobung mit computerabhängiger Identifizierung
ermöglichen.
-
US 6,148,407 beschreibt
ein Verfahren und eine Vorrichtung zum Erzeugen von Computerplattform-Fingerabdrücken.
-
KURZFASSUNG DER ERFINDUNG
-
Die Erfindung ist Gegenstand der Hauptansprüche.
-
Bevorzugte
Ausführungsbeispiele
werden in den Unteransprüchen
behandelt.
-
Die
vorliegende Erfindung behandelt einige der oben diskutierten Schwierigkeiten
und Probleme durch die Entdeckung einer verbesserten Hardware-Identifizierung
für ein
Computersystem. Die Hardware-Identifizierung der vorliegenden Erfindung
stellt ein Verfahren zur Minimierung oder Verhinderung von Software-Piraterie
und der illegalen Nutzung von Computer-Software über den vereinbarten Lizenzumfang
hinaus bereit und ermöglicht
gleichzeitig Geräteaufrüstungen
durch legitime Softwarebenutzer.
-
Die
Hardware-Identifizierung der vorliegenden Erfindung, die in der
vorliegenden Schrift als „ausführliche
(verbose) Hardware-Identifizierung" (VHWID) bezeichnet wird, identifiziert
(1) eine Anzahl von Komponenten-Klassen, die üblicherweise verwendet werden,
um eine Hardware-Konfiguration für
ein Computersystem aufzubauen, und (2) ein jedes Komponenten-Gerät oder eine
jede Komponenten-Instanz innerhalb einer gegebenen Komponenten-Klasse
für ein
jeweiliges Computersystem. Unter Berücksichtigung eines jeden Komponenten-Gerätes oder
einer jeden Komponenten-Instanz innerhalb einer ausgewählten Anzahl
von Komponenten-Klassen wird eine sichere und zuverlässige ausführliche
(verbose) Hardware-Identifizierung (VHWID) für ein jeweiliges Computersystem
generiert, während
gleichzeitig ein Maß an
Toleranz für
Komponen tenänderungen
an der Hardware-Konfiguration des jeweiligen Computersystems ermöglicht wird.
-
Die
ausführliche
(verbose) Hardware-Identifizierung (VHWID) kann verwendet werden,
um eine besondere Hardware-Konfiguration zu identifizieren, wenn
ein Software-Produkt zuerst auf einen Computer geladen wird. Die
ausführliche
(verbose) Hardware-Identifizierung (VHWID) kann für zukünftige Nutzung,
zum Beispiel (i) wenn dasselbe Software-Produkt auf dem gleichen
Computer oder einer Variante des gleichen Computers gestartet wird
oder (ii) wenn das gleiche Software-Produkt auf einer Variante des
gleichen Computers oder auf einem vollständig unterschiedlichen Computer
neu geladen wird, gespeichert werden. Wenn zum Beispiel das gleiche
Software-Produkt
auf dem gleichen Computer oder einer Variante desselben gestartet wird,
wird eine zweite ausführliche
(verbose) Hardware-Identifizierung (sVHWID) generiert und mit der
ersten ausführlichen
(verbose) Hardware-Identifizierung (iVHWID) vergleichen. Wenn eine
gewünschte
Anzahl von Übereinstimmungen
zwischen Komponenten-Klassen
der zweiten ausführlichen
(verbose) Hardware-Identifizierung (sVHWID) und den Komponenten-Klassen
der ersten ausführlichen
(verbose) Hardware-Identifizierung (iVHWID) vorhanden ist, ermöglicht das
Verfahren der vorliegenden Erfindung das Starten des Software-Produktes.
Wenn jedoch eine gewünschte
Anzahl von Übereinstimmungen
zwischen den Komponenten-Klassen der zweiten ausführlichen
(verbose) Hardware-Identifizierung (sVHWID) und den Komponenten-Klassen
der ersten ausführlichen
(verbose) Hardware-Identifizierung (iVHWID) nicht vorhanden ist,
wird das Verfahren der vorliegenden Erfindung das Starten des Software-Produktes
aufgrund von Änderungen
an dem ursprünglichen
Hardwaresystem über
eine bestimmte Schwelle hinaus nicht erlauben.
-
Dementsprechend
betrifft die vorliegende Erfindung eine ausführliche (verbose) Hardware-Identifizierung
(VHWID) und ein Verfahren des Generierens einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID). Die vorliegende Erfindung
betrifft weiterhin ein Verfahren zum Verhindern der Nutzung von
Software auf einem Computersystem, wenn ein Versuch zum Starten
des Software-Produktes eine neue ausführliche (verbose) Hardware-Identifizierung
(VHWID) generiert, die im Vergleich mit einer ursprünglichen
ausführlichen (verbose)
Hardware-Identifizierung (VHWID) aufgrund ei ner oder mehrerer Hardware-Änderungen
an dem ursprünglichen
Computersystem außerhalb
der Toleranz liegt oder nicht spezifikationskonform ist.
-
Diese
und weitere Merkmale und Vorteile der vorliegenden Erfindung werden
nach dem Studium der folgenden ausführlichen Beschreibung der offengelegten
Ausführungsbeispiele
und der anhängenden
Patentansprüche
offensichtlich und erkennbar sein.
-
KURZE BESCHREIBUNG DER FIGUREN
-
1 ist
ein Fließschema
einiger der wichtigsten Komponenten einer beispielhaften Betriebsumgebung
zur Implementierung der vorliegenden Erfindung.
-
2 beschreibt
eine beispielhafte Hardware-Konfiguration, die acht Komponenten-Klassen
und insgesamt 19 Komponenten-Geräte
oder Komponenten-Instanzen innerhalb der acht Komponenten-Klassen
enthält.
-
3 beschreibt
eine mögliche
ausführliche
(verbose) Hardware-Identifizierung (VHWID) für die in 2 gezeigte
beispielhafte Hardware-Konfiguration.
-
Die 4 bis 6 sind
ein Fließschemata
und zeigen beispielhafte Schritte der Bestimmung einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) für eine Hardware-Konfiguration;
und
-
7 ist
ein Fließschema
und zeigt beispielhafte Schritte der Bestimmung, ob ein Software-Produkt auf
einem Computer-Hardwaresystem genutzt werden kann durch Vergleichen
einer neu generierten ausführlichen
(verbose) Hardware-Identifizierung (VHWID) mit einer zuvor generierten
ausführlichen
(verbose) Hardware-Identifizierung (VHWID).
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Für ein besseres
Verständnis
der Grundsätze
der vorliegenden Erfindung folgen Beschreibungen von spezifischen
Ausführungsbeispielen
der Erfindung und eine spezi fische Terminologie wird zur Beschreibung der
spezifischen Ausführungsbeispiele
verwendet. Es wird dennoch erkennbar sein, dass durch diese spezifische
Terminologie keine Einschränkung
des Erfindungsumfanges beabsichtigt ist. Diskutierte Abwandlungen, weitere
Modifizierungen und weitere Anwendungen der Grundsätze der
vorliegenden Erfindung sind so zu verstehen, wie sie der Durchschnittsfachmann
auf dem Gebiet der Erfindung normalerweise verstehen würde.
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Identifizieren
einer Hardware-Konfiguration eines gegebenen Computersystems durch
ausführliche
(verbose) Hardware-Identifizierung (VHWID). Die vorliegende Erfindung
betrifft ebenfalls ein Verfahren des Generierens einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) durch Identifizieren
aller Komponenten-Instanzen innerhalb einer ausgewählten Anzahl
von Komponenten-Klassen. Die vorliegende Erfindung betrifft weiterhin
ein Verfahren der Nutzung einer ausführlichen (verbose) Hardware-Identifizierung
(VHWID) zum Bestimmen, ob ein Software-Produkt auf einer Computer-Hardware-Konfiguration
genutzt werden kann.
-
Die
ausführliche
(verbose) Hardware-Konfiguration (VHWID) kann für ein Computersystem generiert werden,
das eine Vielzahl von Hardware-Komponenten umfasst. Ein beispielhaftes
Computersystem kann eine Anzahl von Hardware-Komponenten umfassen,
die in Klassen zusammengestellt sind, wie unter anderem Festplattenlaufwerke,
optische Laufwerke, Netzwerkkarten, Grafikkarten, Nur-Lese-Speicher
(ROM), Direktzugriffsspeicher (RAM) und ein Basic Input-Output System
(RIOS). Ein beispielhaftes Computersystem und eine beispielhafte
Betriebsumgebung zum Ausführen
der vorliegenden Erfindung werden unten beschrieben.
-
Beispielhafte Betriebsumgebung
-
Beispielhafte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf
die Zeichnungen beschrieben werden, in denen jeweils gleiche Verweisziffern
in den mehreren Figuren gleiche Elemente bezeichnen. 1 veranschaulicht
eine beispielhafte Betriebsumgebung für die Implementierung der vorliegenden
Erfindung. Die beispielhafte Betriebsumgebung umfasst ein Allzweck-Rechengerät in Form
eines herkömmlichen
Personalcomputers 20. Im Allgemeinen um fasst ein Personalcomputer 20 eine Verarbeitungseinheit 21,
einen Systemspeicher 22 und einen Systembus 23,
der verschiedene Systemkomponenten verbindet, unter anderem den
Systemspeicher 22 mit der Verarbeitungseinheit 21.
Der Systembus 23 kann eine beliebige mehrerer Arten von
Busstrukturen sein, wie unter anderem ein Speicherbus oder ein Speicher-Steuergerät, ein Peripheriebus
und ein Localbus unter Verwendung einer beliebigen einer Vielzahl
von Busarchitekturen. Der Systemspeicher umfasst einen Nur-Lese-Speicher
(ROM) 24 und einen Direktzugriffsspeicher (RAM) 25.
Ein Basic Input-Output System (RIOS) 26, das Grundroutinen
enthält,
die helfen, Informationen zwischen Elementen innerhalb des Personalcomputers 20 zu übertragen,
wie zum Beispiel während des
Hochfahrens, ist in dem Nur-Lese-Speicher (ROM) 24 gespeichert.
-
Der
Personalcomputer 20 umfasst weiterhin ein Festplattenlaufwerk 27 zum
Lesen von und Schreiben auf eine Festplatte, die nicht gezeigt wird,
ein Magnetplattenlaufwerk 28 zum Lesen von und Schreiben
auf eine herausnehmbare Magnetplatte 29 und ein optisches
Plattenlaufwerk 30 zum Lesen von und Schreiben auf eine
herausnehmbare optische Speicherplatte 31, wie zum Beispiel
eine CD-ROM oder ein anderes optisches Speichermedium. Das Festplattenlaufwerk 27,
das Magnetplattenlaufwerk 28 und das optische Plattenlaufwerk 30 sind
jeweils durch eine Festplattenlaufwerk-Schnittstelie 34 mit dem Systembus 23 verbunden. Wenngleich
die hierin beschriebene beispielhafte Umgebung eine Festplatte 27,
eine herausnehmbare Magnetplatte 29 und eine herausnehmbare
optische Speicherplatte 31 verwendet, soll der Durchschnittsfachmann beachten,
dass andere Arten von computerlesbaren Speichermedien, die Daten
speichern können,
die durch einen Computer zugänglich
sind, in der beispielhaften Betriebsumgebung ebenfalls verwendet
werden können,
wie zum Beispiel Magnetkassetten, Flash-Speicherkarten, Digital
Video Discs (DVDs), Bernoulli-Wechselplatten, Direktzugriffsspeicher
(RAMs), Nur-Lese-Speicher (ROMs) und ähnliche. Die Laufwerke und
ihre zugehörigen
computerlesbaren Speichermedien stellen nichtflüchtige Speicher von computerausführbaren Anweisungen,
Datenstrukturen, Programmmodulen und sonstigen Daten für den Personalcomputer 20 bereit. Zum
Beispiel kann wenigstens eine Datei 60 (nicht gezeigt)
in dem Direktzugriffsspeicher (RAM) 25 und/oder dem Festplattenlaufwerk 27 des
Personalcomputers 20 gespeichert sein.
-
Eine
Anzahl von Programmmodulen kann auf dem Festplattenlaufwerk 27,
dem Magnetplattenlaufwerk 29, dem optischen Plattenlaufwerk 31,
in dem Nur-Lese- Speicher
(ROM) 24 oder dem Direktzugriffsspeicher (RAM) gespeichert
sein, unter anderem ein Betriebssystem 35, ein Anwendungsprogrammmodul 36,
andere Programmmodule 37 und Programmdaten 38.
Die Programmmodule enthalten unter anderem Routinen, Unterroutinen,
Programme, Objekte, Komponenten, Datenstrukturen u. s. w., die bestimmte
Aufgaben ausführen
oder bestimmte abstrakte Datenarten implementieren. Aspekte der
vorliegenden Erfindung können
als fester Bestandteil eines Anwendungsprogrammmoduls 36 oder
als Teil eines anderen Programmmoduls 37 implementiert
werden.
-
Ein
Benutzer kann Befehle und Informationen über Eingabegeräte, wie
zum Beispiel eine Tastatur 40 und ein Zeigegerät 42,
in den Personalcomputer 20 eingeben. Andere Eingabegeräte (nicht
gezeigt) können unter
anderem ein Mikrofon, ein Joystick, ein Gamepad, eine Satellitenschüssel, ein
Scanner oder ähnliche sein.
Diese und andere Eingabegeräte
sind oft über
eine serielle Schnittstelle 46, die mit dem Systembus 23 verbunden
ist, die jedoch auch mit anderen Schnittstellen, wie zum Beispiel
einer parallelen Schnittstelle, einem Gameport, einem universellen
seriellen Bus (USB) oder ähnlichen,
verbunden sein kann, mit der Verarbeitungseinheit 22 verbunden.
Ein Monitor 47 oder eine andere Art von Datensichtgerät kann ebenfalls über eine
Schnittstelle, wie zum Beispiel einen Videoadapter 48,
mit dem Systembus 23 verbunden sein. Zusätzlich zu
dem Monitor umfassen Personalcomputer üblicherweise andere periphere
Ausgabegeräte
(nicht gezeigt), wie zum Beispiel Lautsprecher und Drucker.
-
Der
Personalcomputer 20 kann unter Verwendung von logischen
Verbindungen zu wenigstens einem Ferncomputer 49 in einer
vernetzten Umgebung arbeiten. Der Ferncomputer 49 kann
ein anderer Personalcomputer, ein Server, ein Client, ein Router,
ein Netzwerk-PC, ein Peer-Gerät
oder ein gemeinsamer Netzknoten sein. Wenngleich ein Ferncomputer 49 üblicherweise
zahlreiche oder alle der oben in Bezug auf den Personalcomputer 20 beschriebenen
Elemente umfasst, ist lediglich ein Speichergerät 50 in 1 veranschaulicht
worden. Die in 1 veranschaulichten logischen
Verbindungen umfassen ein lokales Netzwerk (LAN) 51 und
ein Fernnetzwerk (WAN) 52. Solche Netzwerkumgebungen sind
in Büros,
in Unternehmens-Computernetzen, in Intranets und in dem Internet
weit verbreitet.
-
Bei
Verwendung in einer LAN-Netzwerkumgebung ist der Personalcomputer 20 über eine
Netzwerk-Schnittstelle oder einen Adapter 53 mit dem lokalen
Netzwerk 51 verbunden. Bei Verwendung in einer WAN-Netzwerkumgebung
umfasst der Personalcomputer 20 üblicherweise ein Modem 54 oder
eine andere Vorrichtung zum Aufbau von Kommunikation über das
Fernnetzwerk (WAN) 52, wie zum Beispiel das Internet. Das
Modem 54, das intern oder extern sein kann, ist über die
serielle Schnittstelle 46 mit dem Systembus 23 verbunden.
In einer Netzwerkumgebung können
Programmmodule, die in Bezug auf den Personalcomputer 20 veranschaulicht
werden, oder Teile derselben, in dem Fernspeichergerät 50 gespeichert
werden. Es wird erkennbar sein, dass die gezeigten Netzwerkverbindungen
beispielhaft sind und das andere Mittel zum Aufbau einer Kommunikationsverbindung
zwischen Computern verwendet werden können.
-
Darüber hinaus
wird der Durchschnittsfachmann erkennen, dass die vorliegende Erfindung
in anderen Computersystem-Konfigurationen implementiert werden kann,
unter anderem in Handheld-Computern, in Mehrprozessorsystemen, in
mikroprozessorbasierter oder programmierbarer Verbraucherelektronik,
in Netzwerk-Personalcomputern,
in Minicomputern, in Mainframerechnern und ähnlichem. Die vorliegende Erfindung kann
ebenso in verteilten Rechenumgebungen ausgeführt werden, in denen Aufgaben
durch Fernverarbeitungsgeräte
ausgeführt
werden, die über
ein Kommunikationsnetzwerk verknüpft
sind. In einer verteilten Rechenumgebung können Programmmodule sowohl
in lokalen Speichergeräten
als auch in Fernspeichergeräten angeordnet
sein.
-
Implementierung von beispielhaften
Ausführungsbeispielen
der vorliegenden Erfindung
-
Wie
oben beschrieben worden ist, umfasst ein Computersystem üblicherweise
mehrere Klassen von Hardware-Komponenten (zum Beispiel zwei Festplattenlaufwerke)
innerhalb einer jeden Klasse von Hardware-Komponenten.
-
Die
ausführliche
(verbose) Hardware-Identifizierung (VHWID) der vorliegenden Erfindung
berücksichtigt
ein jedes Komponenten-Gerät
(hierin jeweils auch als „Instanz" bezeichnet) innerhalb
einer jeden gewünschten
Klasse von Hardware-Komponenten, die zur Bestimmung der VHWID genutzt
werden. Die ausführliche
(verbose) Hardwareidentifizierung (VHWID) der vorliegenden Erfindung
kann weiterhin das Fehlen eines Komponenten-Gerätes innerhalb einer gegebenen
Komponenten-Klasse eines Computer-Hardware-Systems berücksichtigen.
Zum Beispiel kann eine Bestimmung der Komponenten-Klassen, die zum
Identifizieren eines gegebenen Computer-Hardware-Konfiguration genutzt werden soll, vor
der Überprüfung oder
Untersuchung der gegebenen Computer-Hardware-Konfiguration durchgeführt werden.
Die Computer-Hardware-Konfiguration
kann eine Komponenten-Instanz für
jede der ausgewählten
Komponenten-Klassen, die zum Erzeugen der ausführlichen (verbose) Hardware-Identifizierung
(VHWID) der Computer-Hardware-Konfiguration genutzt werden, enthalten
oder nicht enthalten.
-
Ein
beispielhaftes Verfahren der vorliegenden Erfindung zum Generieren
einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) wird unten angeführt. Weiterhin
wird unten ein beispielhaftes Verfahren der vorliegenden Erfindung
zum Nutzen der ausführlichen
(verbose) Hardware-Identifizierung (VHWID) als Anti-Piraterie-Tool
beschrieben.
-
I. Generieren einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) für ein Computersystem
-
Eine
Beschreibung der Komponenten einer beispielhaften ausführlichen
(verbose) Hardware-Identifizierung (VHWID) wird unten angeführt.
-
A. Die ausführliche (verbose) Hardware-Identifizierung
(VHWID)
-
Die
ausführliche
(verbose) Hardware-Identifizierung (VHWID) eines gegebenen Computersystems umfasst
vorzugsweise drei Teile: (1) eine Header-Komponente, (2) eine Zählkomponente
und (3) eine Hash-Komponente. Jeder der möglichen Teile der ausführlichen
(verbose) Hardware-Identifizierung (VHWID) kann aus der Hardware-Konfiguration eines
gegebenen Computersystems abgeleitet werden. Ein Beispiel einer
Computer-Hardware-Konfiguration und der Instanzen innerhalb einer
jeden Komponenten-Klasse wird in 2 gezeigt.
-
Wie
in 2 gezeigt wird, umfasst die beispielhafte Computer-Hardware-Konfiguration 20 acht
unterscheidbare Komponenten-Klassen 21 bis 28,
die insgesamt 19 Komponenten-Instanzen 200 aufweisen, die auf
die Komponenten-Klassen 21 bis 28 verteilt sind.
Die CD-ROM-Komponenten-Klasse 21 enthält vier Komponenteninstanzen;
die IDE-Komponenten-Klasse 22 enthält zwei Komponenten-Instanzen,
die Laufwerk-Komponenten-Klasse 23 enthält eine Komponenten-Instanz;
die Anzeige-Komponenten-Klasse 24 enthält eine
Komponenten-Instanz; die SCSI-Komponenten-Klasse 25 enthält zwei
Komponenten-Instanzen; die Platten-Komponenten-Klasse 26 enthält sechs
Komponenten-Instanzen; die Netzwerkkarten-Komponenten-Klasse 27 enthält eine
Komponenten-Instanz; und die Prozessor-Komponenten-Klasse (das heißt die CPU-Komponenten-Klasse) 28 enthält zwei
Komponenten-Instanzen. Die Reihe 29 in 2 veranschaulicht einen
String aus Zahlen, die die Anzahl der Komponenteninstanzen innerhalb
jeder der acht Komponenten-Klassen 21 bis 28 darstellen.
-
Es
ist zu beachten, dass die Anzahl der Komponenten-Instanzen innerhalb
einer gegebenen Komponenten-Klasse von Null bis zu einer Anzahl
nach Erfordernis, um eine gegebene Hardware-Konfiguration darzustellen,
schwanken kann, wenngleich eine Implementierung die Anzahl von Komponenten-Instanzen
pro Komponenten-Klasse willkürlich
begrenzen kann. Üblicherweise
enthält
eine gegebene Hardware-Konfiguration von Null bis etwa sechs Komponenten-Instanzen
pro Komponenten-Klasse. Wie unten beschrieben wird, trägt selbst
wenn eine Komponenten-Klasse keine Komponenteninstanz enthält, das
Fehlen einer Komponenten-Instanz in einer Komponenten-Klasse eine
Information bei, die in die ausführliche
(verbose) Hardware-Identifizierung (VHWID) eingearbeitet wird.
-
Eine
beispielhafte ausführliche
(verbose) Hardware-Identifizierung (VHWID) wird in 3 gezeigt.
Die beispielhafte ausführliche
(verbose) Hardware-Identifizierung (VHWID) 33 aus 3 ist
eine Möglichkeit
der Identifizierung der in 2 gezeigten
Computer-Hardware-Konfiguration. Wie oben diskutiert worden ist,
umfasst die ausführliche
(verbose) Hardware-Identifizierung (VHWID) 34 vorzugsweise
wenigstens drei separate Teile: einen Header-Abschnitt 31,
einen Zählabschnitt 32 und
einen Hash-Abschnitt 33.
Jeder der drei separaten Teile der ausführlichen (verbose) Hardwareidentifizierung
(VHWID) 34 wird in 3 veranschaulicht.
Der Header-Abschnitt 31 umfasst vorzugsweise eine Versions-Komponente 310 und
einen trunkierten numerischen Abschnitt 312.
-
Die
Versions-Komponente 310 des Header-Abschnittes 31 identifiziert
eine bestimmte Version der ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34, die verwendet
wird, um ein gegebenes Computersystem zu identifizieren. Zum Beispiel
kann sich eine bestimmte Version (zum Beispiel die Version „1") einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) von einer anderen Version
(zum Beispiel der Version „2") einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) unterscheiden, indem
ein Parametersatz verwendet wird, um die Version 1 zu erzeugen,
wohingegen ein separater unterschiedlicher Parametersatz verwendet
wird, um die Version 2 zu erzeugen. Eine Vielzahl von Parametern
kann verwendet werden, um eine gegebene Version einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) zu erzeugen. Geeignete
Parameter sind unter anderem (1) die Anzahl der Komponenten-Klassen, die in dem
Header-Abschnitt 31 der ausführlichen (verbose) Hardwareidentifizierung
(VHWID) 34 dargestellt werden; (2) ob der Identifizierungs-String
für eine
Komponenten-Instanz oder mehrere Komponenten-Instanzen, die verwendet
wird oder werden, um den Header-Abschnitt 31 zu bilden,
einer Hash-Funktion oder anderer Datenverarbeitung (zum Beispiel
Trunkieren des Identifizierungs-Strings) unterliegt; (3) die größte und/oder
kleinste Anzahl von Komponenten-Klassen, die verwendet werden, um
die ausführliche
(verbose) Hardware-Identifizierung (VHWID) 34 zu erzeugen;
(4) die größte und/oder
kleinste Anzahl von Komponenten-Instanzen, die innerhalb einer gegebenen
Komponenten-Klasse zu berücksichtigen
sind; (5) die Hash-Funktion, die verwendet wird, um Hash-Werte für eine jede
Komponenten-Instanz zu erzeugen; (6) die Länge eines jeden Hash-Ergebnisses, das
verwendet wird, um die ausführliche
(verbose) Hardware-Identifizierung (VHWID) 34 zu bilden;
und (7) die Gesamtlänge
und/oder größte Länge der
ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34.
-
Einige
Komponenten-Klassen können
keine Mehrfach-Komponenten-Instanzen haben und sind als Einzel-Instanz-Klassen
bekannt. Der Gesamtsystem-RAM ist ein Beispiel einer Einzel-Instanz-Klasse.
Die Daten für
eine Einzel-Instanz-Klasse werden gegebenenfalls gehasht und trunkiert,
danach in dem trunkierten numerischen Abschnitt 312 des
Header-Teiles 31 gespeichert. Eine jede Einzel-Instanz-Klasse,
die in dem Header dargestellt wird, wird einen zugehörigen trunkierten
numerischen Abschnitt 312 aufweisen.
-
Vorzugsweise
hat ein Header-Teil 31 der ausführlichen (verbose) Hardware-Identifizierung (VHWID) 34 eine
feste Länge,
die für
alle ausführlichen
(verbose) Hardware-Identifizierungen mit einem besonderen Versionstyp
(zum Beispiel VHWIDs der Version 1) vereinbar ist. Zum
Beispiel kann der Header-Teil 31 der ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34 eine feste
Länge von
etwa 10 bis etwa 24 Bytes aufweisen, wobei die Gesamtzahl von Bytes
unter der Versions-Komponente 310 und dem trunkierten numerischen
Abschnitt 312 aufgeteilt ist.
-
Der
Zählabschnitt 32 umfasst
einen String aus Zahlen, die die Anzahl der Komponenten-Instanzen
innerhalb einer jeden Komponenten-Klasse, die zur Bildung des ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34 genutzt werden,
darstellen. Wie in 3 gezeigt wird, umfasst der
Zählabschnitt 32 einen String
aus Zahlen: „4
2 1 11 6 1 2", der
den Komponenten-Instanzen innerhalb der in 2 gezeigten
Komponenten-Klassen 21 bis 28 entspricht. Es ist
zu beachten, dass wenn eine Komponenten-Klasse keine Komponenten-Instanz
enthält,
der Zählabschnitt 32 „0" für die jeweilige
Komponenten-Klasse enthält.
-
Wie
der oben beschriebene Header-Teil 31, hat auch der Zählabschnitt 32 der
ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34 vorzugsweise
eine feste Länge,
die vereinbar für
alle ausführlichen
(verbose) Hardware-Identifizierungen mit einem bestimmten Versionstyp
ist. Der Zählabschnitt 32 hat
stets eine Länge
gleich n, die Anzahl der Komponenten-Klassen, die zur Bildung der
ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34 verwendet
werden. Üblicherweise
hat der Zählabschnitt 32 der
ausführlichen (verbose)
Hardware-Identifizierung (VHWID) 34 eine feste Länge von
etwa sechs bis etwa 16 Zeichen.
-
Der
Hash-Abschnitt 33 umfasst einen verknüpften String von Hash-Werten,
die jede der 19 Komponenten-Instanzen innerhalb der in 2 gezeigten
Komponenten-Klassen 21 bis 28 darstellen.
Ein jedes separates Hash-Ergebnis kann eine Länge von bis zu etwa 160 Bit
aufweisen. Vorzugsweise hat ein jedes separate Hash-Ergebnis eine
Länge von
etwa zehn bis etwa 20 Bit, stärker
vorzugsweise von etwa 16 Bit. In diesem Beispiel hat der resultierende
Hash-Abschnitt 33 der ausführlichen (verbose) Hardware-Identifizierung (VHWID) 34 eine
gewünschte
Gesamtlänge
von 304 Bit (das heißt
19 × 16
= 304).
-
Der
Hash-Abschnitt 33 der ausführlichen (verbose) Hardware-Identifizierung
(VHWID) 34 hat üblicherweise
eine Länge,
die in Abhängigkeit
von der Anzahl von Komponenten-Instanzen innerhalb von n Komponenten-Klassen
einer Hardware-Konfiguration
schwankt. Die Gesamtlänge
des Hash-Abschnittes 33 ist gleich der Anzahl der Komponenten-Instanzen
multipliziert mit der gewünschten
Länge des
Hash-Ergebnisses
für ein jedes
Komponenten-Instanz-Hash-Ergebnis.
-
Wie
in 3 gezeigt wird, wird die ausführliche (verbose) Hardware-Identifizierung (VHWID) 34 durch einen
verknüpften
String des Header-Teiles 31, des Zählteiles 32 und des
Hash-Teiles 33 dargestellt. Ein beispielhaftes Verfahren
der Bestimmung einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) 34 für eine Computer-Hardware-Konfiguration
wird unten beschrieben.
-
Es
ist zu beachten, dass die ausführliche
(verbose) Hardware-Identifizierung (VHWID) der vorliegenden Erfindung
aus nur einem Teil bestehen kann. In einem beispielhaften Ausführungsbeispiel
der vorlegenden Erfindung umfasst die ausführliche (verbose) Hardware-Identifizierung
(VHWID) einer gegebenen Computer-Hardware-Konfiguration lediglich den Hash-Teil 33.
In diesem Ausführungsbeispiel
enthält
die ausführliche (verbose)
Hardware-Identifizierung (VHWID) keinen Header-Teil 31 oder
Zählteil 32.
In einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung umfasst die ausführliche (verbose) Hardware-Identifizierung
(VHWID) lediglich den Zählteil 32 in
Kombination mit dem Hash-Teil 33. In einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung umfasst die ausführliche (verbose) Hardware-Identifizierung
(VHWID) lediglich den Header-Teil 31 und den Hash-Teil 33,
die so aufgebaut sind, dass der Zählteil 32 implizit
ist.
-
B. Bestimmung einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID) für ein Computersystem
-
Die
VHWID der vorliegenden Erfindung kann durch ein in den 4 bis 6 gezeigtes
beispielhaftes Verfahren bestimmt werden. Die Schritte des beispielhaften
Verfahrens können
durch Softwarecode in einem Software-Produkt auf dem Computer eines
Kunden, ähnlich
dem oben unter Bezugnahme auf 1 beschriebenen
Computer 20, ausgeführt
werden. Wie in den 4 bis 6 gezeigt
wird, beginnt eine bei spielhafte Bestimmung einer VHWID für eine gegebene
Computer-Hardware-Konfiguration
(nachfolgend „HW1" genannt) mit dem
Schritt 401, in dem eine Anzahl von Komponenten-Klassen
n ausgewählt
wird, um eine gegebene Computer-Hardware-Konfiguration HW1 zu identifizieren.
Wie oben diskutiert worden ist, kann ein gegebenes Computersystem
eine Vielzahl von Hardware-Komponenten und Klassen von Hardware-Komponenten enthalten.
Beispielhafte Hardware-Komponenten-Klassen sind unter anderem Festplattenlaufwerke,
logische Partitionen, optische Laufwerke, Netzwerkkarten, Grafikkarten,
Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), IDE-Geräte, Soundkarten,
Videokarten, Prozessoren, SCSI-Geräte und das BIOS-System. Vorzugsweise
ist n, die Anzahl der Hardware-Komponenten-Klassen, eine ganze Zahl
in dem Bereich von etwa zwei bis etwa 16. Im Allgemeinen ist n vorzugsweise
möglichst
groß,
um (i) ein gegebenes Computersystem genauer zu identifizieren, und
(ii) um den Toleranzgrad eines gegebenen Computersystems genauer
zu messen.
-
Nachdem
die Anzahl von Komponenten-Klassen n in dem Schritt
401 ausgewählt worden
ist, wird eine jede Komponenten-Klasse in dem Schritt
402 identifiziert.
Die Komponenten-Klasse kann jede der oben beschriebenen Komponenten-Klassen,
wie zum Beispiel die Klasse der Festplattenlaufwerke, umfassen.
Eine beispielhafte Liste von Komponenten-Klassen, die zum Identifizieren
der Beispiel-Hardware-Konfiguration HW1 verwendet werden, wird unten
in Tabelle 1 angeführt. Tabelle 1: Beispielhafte Liste von Hardware-Komponenten-Klassen,
die zum Identifizieren der Beispiel-Hardware-Konfiguration HW1 verwendet
werden.
Komponenten-Klasse Nr. | Beschreibung
der Klasse | Klassen-Bezeichner |
1 | CD-ROM | CR-ROM-Geräte-Bezeichner |
2 | IDE-Gerät | IDE-Geräte-Bezeichner |
3 | Festplattenlaufwerk | Laufende
Nummer der Laufwerkspartition |
4 | Grafikkartengerät | Bezeichner |
5 | SCSI-Geräte | SCSI-Geräte-Bezeichner |
6 | Plattengeräte | Plattengeräte-Bezeichner |
7 | Netzwerkkarte | MAC-Adresse |
8 | Prozessoren | Prozessorgeräte-Bezeichner |
-
Wie
in Tabelle 1 gezeigt wird, ist n in diesem Beispiel gleich acht,
und die identifizierten Hardware-Komponenten-Klassen umfassen: (1)
eine CD-ROM-Klasse; (2) eine IDE-Geräte-Klasse; (3) eine Laufwerk-Klasse;
(4) eine Grafikkartengeräte-Klasse;
(5) eine SCSI-Geräte-Klasse;
(6) eine Platten-Klasse; (7) eine Netzwerkkarten-Klasse und (8)
eine CPU-Prozessor-Klasse.
-
Nachdem
eine jede Komponenten-Klasse in dem Schritt 402 identifiziert
wurde, werden in dem Schritt 403 die einzelnen Geräte oder
Instanzen innerhalb einer jeden Hardware-Komponenten-Klasse identifiziert. Die „Zählung" (das heißt, die
Anzahl von Komponenten-Geräten
oder Komponenten-Instanzen in einer jeden Komponenten-Klasse) wird ebenfalls
in dem Schritt 403 ermittelt. Vorzugsweise wird eine jede
Instanz innerhalb einer jeweiligen Komponenten-Klasse durch den
zu der Instanz zugehörigen
eindeutigsten Identifizierungs-String identifiziert. Zum Beispiel
kann die Hardware-Konfiguration
eine CR-ROM enthalten, die von der NEC Corporation hergestellt wurde
und einen Identifizierungs-String „NEC CDRW24 S15" aufweist. Ein beliebiges
verfügbares
Verfahren zum Bestimmen des eindeutigsten Identifizierungs-Strings
einer gegebenen Instanz kann in der vorliegenden Erfindung verwendet
werden. Der Schritt des Zuweisens eines Identifizierungs-Strings
für eine
jede Komponenten-Instanz wird in dem Schritt 404 gezeigt.
-
Nachdem
der Identifizierungs-String für
eine jede Komponenten-Instanz zugewiesen worden ist, wird in dem
Schritt 405 der Header-Abschnitt der ausführlichen
(verbose) Hardware-Identifizierung (VHWID) gebildet. In dem Schritt 406 wird
eine bestimmte Version der VHWID in den Header eingegeben, um den
Header-Abschnitt 310 wie in 3 gezeigt
zu bilden. Wie oben beschrieben wurde, kann die Versionsnummer wenigstens
einen Parameter darstellen, der verwendet wird, um die ausführliche
(verbose) Hardware-Identifizierung (VHWID) zu bestimmen.
-
In
dem Schritt 407 wird eine Komponenten-Klasse, die in dem
Header darzustellen ist, identifiziert. Üblicherweise werden Komponenten-Klassen,
die lediglich eine einzige Komponenten-Instanz haben können, oder
Einzel-Instanz-Klassen, in dem Header- Abschnitt der VHWID dargestellt. Geeignete
Komponenten-Klassen, die in dem Header-Abschnitt der VHWID dargestellt werden
können,
sind unter anderem eine Speicher-Komponenten-Klasse,
eine Computer-Koppelbarkeits-Komponenten-Klasse (das heißt, ob ein
Computer gekoppelt werden kann oder nicht), das BIOS-System oder
eine Kombination aus denselben. In einem beispielhaften Ausführungsbeispiel
der vorliegenden Erfindung umfasst der Header-Abschnitt der VHWID
Informationen von einer einzigen Komponenten-Klasse der Hardware-Konfiguration.
-
In
dem Entscheidungsblock 409 wird eine Entscheidung getroffen,
ob der Identifizierungs-String der Einzel-Instanz-Klasse, der in
den Header einzufügen
ist, einer Streuspeicherfunktion (Hashing-Funktion) unterliegt.
Der Identifizierungs-String kann wortgetreu eingefügt werden,
einer Hash-Funktion unterworfen werden und/oder auf eine gewünschte Anzahl
von Bits trunkiert werden.
-
Wenn
der Identifizierungs-String einer Hash-Funktion zu unterwerfen ist,
geht das Verfahren zu dem Schritt 411 über, in dem die Hash-Funktion
an dem Identifizierungs-String der Komponenten-Instanz durchgeführt wird.
Vorzugsweise wird das Hash-Ergebnis
auf eine Länge
von etwa 16 Bit trunkiert. In dem Schritt 412 wird das
Hash-Ergebnis in
den trunkierten numerischen Abschnitt 312 des Header-Teils 31 (wie
in 3 gezeigt) eingegeben. Wenn der Identifizierungs-String
keiner Hash-Funktion unterworfen wird, geht das Verfahren zu dem
Schritt 410 über,
in dem der Identifizierungs-String
auf eine gewünschte
Länge trunkiert
und in den trunkierten numerischen Abschnitt 312 des Header-Teils 31 eingegeben
wird. Vorzugsweise wird der Identifizierungs-String auf eine Länge von
weniger als etwa 16 Bit trunkiert.
-
Nachdem
ein trunkiertes Hash-Ergebnis aus dem Schritt 412 hervorgegangen
ist oder ein trunkierter Identifizierungs-String aus dem Schritt 410 in
den trunkierten numerischen Abschnitt 312 des Header-Teils 31 eingegeben
worden ist, geht das Verfahren zu dem Entscheidungsblock 413 über. In
dem Entscheidungsblock 413 wird eine Entscheidung getroffen,
ob Details einer anderen Komponenten-Klasse zu dem Header-Teil 31 der
VHWID hinzuzufügen
sind. Wenn zusätzliche
Details der anderen Komponenten-Klasse
zu dem Header-Teil 31 der VHWID hinzuzufügen sind,
kehrt das Verfahren zu dem Schritt 407 zurück und verfährt wie
oben beschrieben. Wenn keine weiteren Informationen zu dem Header-Teil 31 der
VHWID hinzuzufügen
sind, geht das Verfahren zu dem Schritt 414 über, in
dem der Zählabschnitt 32 der
VHWID vorbereitet wird. Wie oben diskutiert worden ist, umfasst
der Zählabschnitt 32 der
VHWID einen numerischen String von n Zahlen, die die Anzahl der
Komponenten-Instanzen innerhalb einer jeden der n Komponenten-Klassen,
die verwendet werden, um die VHWID zu bilden, darstellen. (Siehe
Zählabschnitt 32 aus 3.)
-
In
dem Schritt 415 wird eine Hash-Funktion an den Identifizierungs-Strings
für eine
jede Komponenten-Instanz, die in dem Zählabschnitt 32 der
VHWID dargestellt wird, durchgeführt.
Wenn eine gegebene Komponenten-Klasse keine Komponenteninstanz enthält, kann
ein besonderes Hash-Ergebnis zur Verwendung in der VHWID generiert
werden, wobei das besondere Hash-Ergebnis andeutet, dass eine gegebene
Komponenten-Klasse keine Komponenten-Instanz enthielt. Alternativ
dazu kann kein Hash-Wert gespeichert werden und der Teil des Zählabschnittes 32,
der der fehlenden Komponenten-Klasse entspricht, wird auf Null gesetzt,
womit angedeutet wird, dass die Komponenten-Klasse fehlt. Die Hash-Ergebnisse
für eine
jede Komponenten-Instanz können
auf eine gewünschte
Länge trunkiert
werden. In einem beispielhaften Ausführungsbeispiel der vorliegenden
Erfindung werden die einzelnen Hash-Funktions-Ergebnisse auf eine Länge von
etwa zehn bis etwa 20 Bit, stärker
vorzugsweise von etwa 16 Bit, trunkiert.
-
Beliebige
bekannte Hash-Funktionen können
in der vorliegenden Erfindung verwendet werden, insofern die Hash-Funktion
in der Lage ist, einen Identifizierungs-String von willkürlicher
Länge anzunehmen
und einen Hash-Ausgang oder ein Hash-Ergebnis mit einer festen Länge von
höchstens
etwa 160 Bit zu erzeugen. Beispiele geeigneter Hash-Funktionen sind
unter anderem Hash-Funktionsalgorithmen HAVAL, MD2, MD4, MD5 und
SHA-1, die dem Durchschnittsfachmann allesamt bekannt sind. Andere
geeignete Hash-Funktionen zur Anwendung in der vorliegenden Erfindung
werden in „Applied
Cryptography" von
Bruce Schneier, veröffentlicht
von John Wiley & Sons
(ISBN 0471117099) beschrieben, deren Offenlegung hiermit per Verweis
vollständig
eingearbeitet wird.
-
In
einem Ausführungsbeispiel
der vorliegenden Erfindung kann ein „Salzwert" zu dem Komponenten-Instanz-Bezeichner
hinzugefügt
werden, bevor die Hash-Funktion für eine gegebene Komponenten-Instanz
durchgeführt
wird. In diesem Ausführungsbei spiel
ermöglicht
das Hinzufügen
eines Salzwertes die Erzeugung verschiedener VHWIDs auf Basis ein
und derselben Computer-Hardware-Konfiguration. Verschiedene VHWIDs
für die
gleiche Hardware-Konfiguration können
vorteilhaft sein, wenn verschiedene Anwendungen oder verschiedene
Durchläufe
ausgeführt
werden. Ein Beispiel einer Situation, in der verschiedene VHWIDs für die gleiche
Hardware-Konfiguration vorteilhaft sein können, wird unten diskutiert
werden.
-
Wenn
ein Benutzer zum Beispiel mehrere Softwarepakete von dem gleichen
Lieferanten aktiviert, kann es möglich
sein, die VHWID zu nutzen, um die getrennten Aktivierungsaufzeichnungen
zu verknüpfen, um
ein Bild der Software-Kaufgewohnheiten des Benutzers aufzubauen.
Zum Schutz dagegen können
verschiedene VHWIDs von der gleichen Maschine erzeugt werden, die
unverknüpft
erscheinen, indem jeder separate Hash unter Verwendung einer Hash-Funktion,
wie zum Beispiel hashx = MD5[(Salzwert)x + ID-String] aufgebaut wird, wobei der
Salzwert für
jedes Softwarepaket verschieden ist.
-
In
dem Schritt 416 werden die Hash-Ergebnisse für eine jede
Komponenteninstanz verknüpft,
um den Hash-Abschnitt 33 der ausführlichen (verbose) Hardware-Identifizierung (VHWID) 34 wie
in 3 gezeigt zu bilden. In dem Schritt 217 wird
die ausführliche
(verbose) Hardware-Identifizierung (VHWID) 34 assembliert, indem
der Header-Teil 31, der Zählteil 32 und der
Hash-Teil 33 verknüpft
werden.
-
In
dem Schritt 418 wird die resultierende ausführliche
(verbose) Hardwareidentifizierung für die Hardware-Konfiguration
HW1 für
zukünftige
Nutzung gespeichert. Die ausführliche
(verbose) Hardware-Identifizierung (VHWID) für die Hardware-Konfiguration HW1
kann örtlich
gespeichert werden (zum Beispiel in der Registratur, im Dateisystem
oder in einem sicheren Speicher) oder an zugänglichen Fernadressen (zum
Beispiel in einer Datenbank), oder sie kann zwecks Lizenzerwerbung
an einen Clearinghouse-Server gesendet werden.
-
Wie
oben diskutiert worden ist, kann die ausführliche (verbose) Hardware-Identifizierung (VHWID)
der vorliegenden Erfindung für
die Hardware-Konfiguration HW1 lediglich (i) einen Hash-Abschnitt 33 oder
(ii) einen Zählteil 32 in
Kombination mit dem Hash-Abschnitt 33 enthalten, wie zum
Beispiel eine VHWID, die den Zählteil 32,
verknüpft
mit dem Hash-Abschnitt 33, umfasst.
-
II. Nutzung de ausführlichen (verbose) Hardware-Identifizierung
(VHWID), um die Nutzung eines Software-Produktes auf einem Computersystem
zu ermöglichen
-
Die
vorliegende Erfindung betrifft weiterhin ein Verfahren zur Nutzung
einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID), um die Nutzung eines
Software-Produktes
auf einem Computersystem mit einer gegebenen Computer-Hardware-Konfiguration zu
ermöglichen.
In einem Ausführungsbeispiel
der vorliegenden Erfindung wird das Verfahren zur Nutzung einer
ausführlichen
(verbose) Hardware-Identifizierung (VHWID), um die Nutzung eines
Software-Produktes auf einem Computersystem mit einer gegebenen
Computer-Hardware-Konfiguration zu ermöglichen, initialisiert (i)
während
einer beliebigen Installation des Software-Produktes auf einem anderen
Computer als die Erstinstallation, (ii) während des Startens eines Software-Produktes
oder einer Anwendung, das oder die auf einer Komponente einer Hardware-Konfiguration
bereits vorhanden ist, oder (iii) beides. Ein beispielhaftes Verfahren
zur Nutzung der ausführlichen
(verbose) Hardware-Identifizierung (VHWID) wird in 7 beschrieben.
Die Schritte des beispielhaften Verfahrens können durch Softwarecode innerhalb
eines Software-Produktes auf einem Computer eines Kunden ähnlich dem
oben unter Bezugnahme auf 1 beschriebenen
ausgeführt
werden.
-
Wie
in dem Schritt 501 von 7 gezeigt
wird, wird ein Software-Produkt auf einen Computer mit der Hardware-Konfiguration
HW2 geladen oder gestartet. Die Computer-Hardware-Konfiguration
HW2 kann identisch mit der Hardware-Konfiguration HW1 sein, die
für eine
erste ausführliche
(verbose) Hardware-Identifizierung (hierin iVHWID genannt) verwendet
wird, oder sie kann ein vollständig
unterschiedlicher Computer sein. In dem Schritt 502 wird
eine neue ausführliche
(verbose) Hardware-Identifizierung (hierin nVHWID genannt) für die Computer-Hardware-Konfiguration
HW2 generiert. Die ausführliche
(verbose) Hardware-Identifizierung (nVHWID) für die Computer-Hardware-Konfiguration HW2
kann wie oben beschrieben und in den 4 bis 6 gezeigt
generiert werden. Nachdem eine neue ausführliche Hardware-Identifizierung
(nVHWID) für
die Computer-Hardware-Konfiguration HW2 generiert worden ist, wird
eine gespeicherte ausführliche
(verbose) Hardware-Identifizierung (VHWID) in dem Schritt 503 abgerufen. Üblicherweise
ist die gespeicherte ausführliche
(verbose) Hardware-Identifizierung (VHWID) die erste oder anfängliche
ausführliche
(verbose) Hardware-Identifizierung (iVHWID), die auf einer ersten
Computer-Hardware-Konfiguration HW1 während oder kurz nach einer
Erstinstallation eines Software-Produktes auf die HW1 generiert
wurde.
-
In
dem Schritt 504 wird die neue ausführliche (verbose) Hardware-Identifizierung
(nVHWID) der Hardware-Konfiguration HW1 mit der ersten oder anfänglichen
ausführlichen
(verbose) Hardware-Identifizierung (iVHWID) der Hardware-Konfiguration
HW1 verglichen. Das Verfahren geht zu dem Entscheidungsblock 505 über. In
dem Entscheidungsblock 505 wird eine Entscheidung getroffen,
ob eine Anzahl von Komponenten-Klassen-Übereinstimmungen
gleich der erforderlichen Anzahl der Komponenten-Klassen-Übereinstimmungen m ist oder
diese übersteigt,
die benötigt
wird, um die Nutzung des Software-Produktes auf der Hardware-Konfiguration
HW2 freizugeben. Wenn die Anzahl der Komponenten-Klassen-Übereinstimmungen
kleiner ist als die erforderliche Anzahl von Komponenten-Klassen-Übereinstimmungen
m, geht das Verfahren zu dem Schritt 507 über, in
dem das Verfahren die Nutzung des Software-Produktes auf der Hardware-Konfiguration
HW2 sperrt.
-
In
dem Schritt 504 kann der Vergleich der neuen ausführlichen
(verbose) Hardware-Identifizierung (nVHWID) der Hardware-Konfiguration
HW2 mit der ersten oder anfänglichen
ausführlichen
(verbose) Hardware-Identifizierung (iVHWID) der Hardware-Konfiguration HW1
wenigstens eine Regel zum Bestimmen, ob eine Übereinstimmung für eine gegebene
Komponenten-Klasse vorhanden ist, umfassen. Vorzugsweise umfasst
das Verfahren zur Nutzung einer ausführlichen (verbose) Hardware-Identifizierung
(VHWID) zur Freigabe der Nutzung eines Software-Produktes wenigstens
eine der folgenden Regeln zum Bestimmen der Anzahl von Komponenten-Kiassen-Übereinstimmungen zwischen einer
neu generierten ausführlichen
(verbose) Hardware-Identifizierung
und einer zuvor gespeicherten ausführlichen (verbose) Hardware-Identifizierung:
- (i) Ein jedes Hash-Ergebnisses in einer neuen
ausführlichen
(verbose) Hardware-Identifizierung (nVHWID), die eine Komponenten-Instanz
in einer Komponenten-Klasse der Hardware-Konfiguration HW2 darstellt, wird
mit einem jeden Hash- Ergebnis
in der ersten oder anfänglichen
ausführlichen
(verbose) Hardwareidentifizierung (iVHWID), die die entsprechende
Komponenten-Klasse in der Hardware-Konfiguration HW1 darstellt, verglichen.
- (ii) Eine Übereinstimmung
lieg zwischen einer Komponenten-Klasse der Hardware-Konfiguration
HW2 und einer entsprechenden Komponenten-Klasse der Hardware-Konfiguration
HW1 vor, wenn ein Hash-Ergebnis in der neuen ausführlichen
(verbose) Hardware-Identifizierung (nVHWID), die eine Komponenten-Instanz
innerhalb der Komponenten-Klasse der Hardware-Konfiguration HW2
darstellt, mit einem beliebigen der Hash-Ergebnisse in der ersten
oder anfänglichen
ausführlichen
(verbose) Hardware-Identifizierung (iVHWID), die die entsprechende
Komponenten-Klasse in der Hardware-Konfiguration HW1 darstellt, übereinstimmt.
- (iii) Eine Einzel-Übreinstimmung
zwischen einer Komponenten-Klasse der Hardware-Konfiguration HW2 und
einer entsprechenden Komponenten-Klasse der Hardware-Konfiguration
HW1 liegt vor, wenn wenigstens zwei Hash-Ergebnisse in der neuen
ausführlichen
(verbose) Hardware-Identifizierung (nVHWID), die wenigstens zwei
Komponenten-Instanzen in der Komponenten-Klasse der Hardware-Konfiguration
HW2 darstellen, mit wenigstens zwei Hash-Ergebnissen in der ersten
oder anfänglichen
ausführlichen
(verbose) Hardware-Identifizierung (iVHWID), die die entsprechende
Komponenten-Klasse in der Hardware-Konfiguration HW1 darstellen, übereinstimmen.
- (iv) Keine Übereinstimmungen
liegen zwischen einer Komponenten-Klasse der Hardware-Konfigurationen HW2
und einer entsprechenden Komponenten-Klasse der Hardware-Konfiguration
HW1 vor, wenn die Komponenten-Klasse in der Hardware-Konfiguration HW2
keine Komponenten-Instanz enthält
und die entsprechende Komponenten-Klasse in der Hardware-Konfiguration
HW1 eine Komponenten-Instanz enthält.
- (v) Keine Übereinstimmungen
liegen zwischen einer Komponenten-Klasse der Hardware-Konfiguration HW2
und einer entsprechenden Komponenten-Klasse der Hardware-Konfiguration
HW1 vor, wenn die Komponenten-Klasse in der Hardware-Konfiguration HW2
eine Einzel-Komponenten-Instanz enthält und die entsprechende Komponenten-Klasse
in der Hardware-Konfiguration HW1 keine Komponenten-Instanz enthält.
- (vi) Die Anzahl der erforderlichen Komponenten-Klassen-Übereinstimmungen
m zwischen der Hardware-Konfiguration HW2 und der Hardware-Konfiguration
HW1 kann vorbestimmt werden und in einem Code auf einem gegebenen
Software-Produkt eingebettet sein.
-
Die
Anzahl der erforderlichen Komponenten-Klassen-Übereinstimmungen m wird in
Abhängigkeit
von dem Toleranzgrad ausgewählt,
der für
die Hardware-Konfigurations-Komponenten-Änderungen
gewünscht wird.
Die Anzahl der erforderlichen Komponenten-Klassen-Übereinstimmungen
m kann so groß sein
wie n, die Gesamtzahl der Komponenten-Klassen, die bei der Bestimmung
einer ausführlichen
(verbose) Hardwareidentifizierung (VHWID) berücksichtigt wird, oder sie kann
gleich eins sein. Mit der Zunahme von m nimmt der Toleranzgrad zu
der Computer-Hardware-Konfiguration ab. Wenn zum Beispiel die Gesamtzahl
der Komponenten-Klassen n gleich 10 ist und m gleich 7 ist, müssen 7 von
10 Komponenten-Klassen mit wenigstens einer Komponenten-Instanz übereinstimmen,
um das Laden oder Laufen eines Software-Produktes zu ermöglichen. Wenn
die Anzahl der Komponenten-Klassen-Übereinstimmungen kleiner als
7 ist, wird das Software-Produkt nicht laufen, nicht geladen werden
oder nicht zum Laufen auf der Computer-Hardware-Konfiguration lizenziert werden.
-
Die
Anzahl der erforderlichen Komponenten-Klassen-Übereinstimmungen m kann durch
einen Software-Hersteller bestimmt werden und in den Software-Produktcode verschlüsselt werden,
der verwendet wird, um eine ausführliche
(verbose) Hardware-Identifizierung (VHWID) zu generieren. Vorzugsweise
ist m gleich oder größer als
(n – 3),
stärker
vorzugsweise ist m gleich oder größer (n – 2). Wie oben angedeutet wurde, kann
m jedoch in dem Bereich von 1 bis n liegen.
-
Die
oben beschriebenen und in den 4 bis 6 und 7 veranschaulichten
Verfahrensschritte können örtlich oder
an einem fernen Ort durchgeführt
werden. Üblicherweise
kauft ein Kunde ein Software-Produkt, das auf einem gegebenen Computer
laufen kann, wie zum Beispiel der in 1 gezeigte
Computer 20. Das Software-Produkt kann ein eingeschweißtes Produkt
sein, bei dem ein Software-Programm auf einem transportablen computerlesbaren
Speichermedium, wie zum Beispiel einer CD-ROM oder einer Diskette,
gespeichert ist. Alternativ dazu kann das Software-Produkt in elekt ronischem
Format über
ein Netzwerk, wie zum Beispiel ein lokales Netzwerk (LAN) 51 oder
ein Fernnetzwerk (WAN) 52, geliefert oder übergeben
werden. Der Kunde lädt
das Software-Produkt als in dem Systemspeicher 22 gespeichertes
Programm auf den Computer 20.
-
Während einer
Software-Produkt-Installation wird der Kunde üblicherweise aufgefordert,
einen Abschnitt der Software-Produkt-Identifizierung (PID) für das Software-Produkt in den Computer 20 einzugeben. Die
PID kann zum Beispiel aus einem auf dem Etikett oder Schild auf
der Schrumpffolienverpackung aufgedruckten CD-Schlüssel hergeleitet
werden. Der Kunde gibt die PID ein, die zu einem Softwareprogramm
des Software-Produktes zugehörig
ist. Die PID wird lokal auf dem Computer 20 gespeichert
und/oder fern an einem zugänglichen
Ort, entweder in einem lokalen Netzwerk (LAN) 51 oder in
einem Fernnetzwerk (WAN) 52 bei einem Dritten, wie zum
Beispiel einer Aktivierungsstelle, gespeichert.
-
Wie
oben beschrieben worden ist, wird während der Installation oder
der Aktivierung des Software-Produktes eine ausführliche (verbose) Hardware-Identifizierung
(VHWID) ebenfalls unter Verwendung des Codes in dem Software-Produkt
generiert oder durch die Installation des Software-Produktes ausgelöst. Die ausführliche
(verbose) Hardware-Identifizierung (VHWID), die durch das erfindungsgemäße Verfahren
generiert wird, ist zu der Software-Produkt-Identifizierung (PID)
zugehörig
und wird zusammen mit der Software-Produkt-Identifizierung (PID)
lokal auf dem Computer 20 und/oder fern an einem zugänglichen
Ort, entweder in einem lokalen Netzwerk (LAN) 51 oder in
einem Fernnetzwerk (WAN) 52 gespeichert, wie zum Beispiel bei
einer Dritt-Aktivierungsstelle.
-
Als
Teil des Installationsvorganges kann der Kunde aufgefordert werden,
das Software-Produkt bei einer Aktivierungsstelle zu aktivieren.
Diese Stelle kann zum Beispiel der Produkt-Hersteller oder ein bevollmächtigter
Dritter sein. Der Aktivierungsvorgang soll den Kunden dazu veranlassen,
das Software-Produkt zu aktivieren: (i) zur Installation und Nutzung
auf einem spezifischen Computer oder (ii) zur Installation und Nutzung
gemäß den Bedingungen
eines Produkt-Lizenzvertrages. Ein solcher Aktivierungsvorgang wird
detailliert in dem
US-Patent
Nr. 6,243,468 beschrieben, das an die Microsoft Corporation
(Redmond, Washington) abgetreten ist und dessen Inhalt hiermit vollständig per
Verweis eingearbeitet wird.
-
Die
von dem erfindungsgemäßen Verfahren
generierte ausführliche
(verbose) Hardware-Identifizierung (VHWID) und die Software-Produkt-Identifizierung
(PID) können
lokal auf dem Computer 20 und/oder entfernt an einem zugänglichen
Ort, entweder in einem lokalen Netzwerk (LAN) 51 oder in
einem Fernnetzwerk (WAN) 52 bei einer Aktivierungsstelle
gespeichert werden. Vorzugsweise (i) speichert das Software-Produkt sowohl
die ausführliche
(verbose) Hardware-Identifizierung (VHWID) als auch die zugehörige Software-Produkt-Identifizierung
(PID) auf dem Computer 20 und (ii) sendet das Software-Produkt
sowohl die ausführliche (verbose)
Hardware-Identifizierung (VHWID) als auch die zugehörige Software-Produkt-Identifizierung
(PID) in elektronischem Format über
das Fernnetzwerk (WAN) 52 an einen Aktivierungsserver.
Vorzugsweise zeigt das Software-Produkt ein Dialogfenster einer
grafischen Benutzeroberfläche
(GUI) an, wenn es zuerst gestartet wird, womit der Benutzer aufgefordert
wird, eine Verbindung mit dem Aktivierungsserver zur Selbstaktivierung herzustellen.
Der Aktivierungsserver pflegt eine Datenbank zur Speicherung empfangener
ausführlicher
(verboser) Hardware-Identifizierungen (VHWIDs) und ihrer zugehörigen Software-Produkt-Identifizierungen (PIDs).
-
Die
ausführliche
(verbose) Hardware-Identifizierung (VHWID) und die zugehörige Software-Produkt-Identifizierung
(PID) für
ein gegebenes Software-Produkt können über eine
unbegrenzte Zeit gespeichert werden, bis das Software-Produkt auf
einem anderen Computer neu installiert wird oder auf dem ersten
Computer (das heißt,
dem Computer, der während
der Erstinstallation genutzt wurde) gestartet wird. Wenn das gleiche
Software-Produkt auf einem anderen Computer neu installiert wird
oder auf dem ersten Computer gestartet wird, löst der Code auf dem Software-Produkt
ein Verfahren zum Generieren einer neuen ausführlichen (verbose) Hardware-Identifizierung
(VHWID) gemäß der vorliegenden
Erfindung aus. Das Software-Produkt fragt weiterhin die zuvor gespeicherte
ausführliche
(verbose) Hardware-Identifizierung (VHWID), die zu der Software-Produkt-Identifizierung
(PID) des Software-Produktes zugehörig ist, entweder von dem lokalen
Computer 20 oder von einem entfernten Ort über ein
lokales Netzwerk (LAN) 51 oder ein Fernnetzwerk (WAN) 52 ab.
Ein Vergleich zwischen der neuen ausführlichen (verbose) Hardware-Identifizierung
(VHWID) und der zuvor gespeicherten ausführlichen (verbose) Hardware-Identifizierung
(VHWID) wird wie oben beschrieben durchgeführt.
-
Wenn
die Nutzung des Software-Produktes aufgrund wesentlicher Änderungen
in der Hardware-Konfiguration eines ersten Computers (das heißt des Computers,
der während
der Erstinstallation genutzt wurde) verweigert wird, kann ein Dialogfeld
bereitgestellt werden, das dem Kunden anzeigt, dass die Nutzung
des Software-Produktes verweigert wird und dass weiterführende Informationen
zu der zukünftigen
Nutzung des Software-Produktes von einer gegebenen Quelle erhältlich sind.
-
III. Andere Nutzungen einer ausführlichen
(verbose) Hardware-Identifizierung (VHWID)
-
Die
ausführliche
(verbose) Hardware-Identifizierung (VHWID) der vorliegenden Erfindung
kann ebenfalls für
andere Zwecke als die oben beschriebenen verwendet werden. In einem
Ausführungsbeispiel
der vorliegenden Erfindung wird die ausführliche (verbose) Hardware-Identifizierung
(VHWID) genutzt, um eine halteindeutige Installations-ID zur Verfolgung
der Maschine zu erzeugen. In einem anderen Ausführungsbeispiel der vorliegenden
Erfindung wird die ausführliche
(verbose) Hardwareidentifizierung (VHWID) auf einem Clearinghouse-Server
genutzt, wenn Lizenzen zur Nutzung von Software auf einem Computer
eines Kunden vergeben werden.
-
Wenngleich
die Patentschrift ausführlich
in Bezug auf spezifische Ausführungsbeispiele
derselben beschrieben worden ist, wird der Durchschnittsfachmann
erkennen, dass ausgehend von dem Verständnis des Vorstehenden mühelos Abänderungen
und zu den genannten Ausführungsbeispielen
gleichwertige Ausführungen
vorstellbar sind. Dementsprechend soll der Umfang der vorliegenden
Erfindung wie in den anhängenden
Patentansprüchen
und möglichen
Entsprechungen dazu definiert gelten und verstanden werden.