DE602004010563T2 - Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem - Google Patents

Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem Download PDF

Info

Publication number
DE602004010563T2
DE602004010563T2 DE602004010563T DE602004010563T DE602004010563T2 DE 602004010563 T2 DE602004010563 T2 DE 602004010563T2 DE 602004010563 T DE602004010563 T DE 602004010563T DE 602004010563 T DE602004010563 T DE 602004010563T DE 602004010563 T2 DE602004010563 T2 DE 602004010563T2
Authority
DE
Germany
Prior art keywords
component
hardware
class
hardware configuration
hash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE602004010563T
Other languages
English (en)
Other versions
DE602004010563D1 (de
Inventor
Ferdinand Jay Bellevue Alabraba
Aidan T. Hughes
Caglar Gunyakti
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE602004010563D1 publication Critical patent/DE602004010563D1/de
Application granted granted Critical
Publication of DE602004010563T2 publication Critical patent/DE602004010563T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1011Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Multi Processors (AREA)

Description

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

Claims (19)

  1. Verfahren zum Generieren einer ausführlichen (verbose) Hardware-Identifizierung für ein erstes Computersystem, das eine Anzahl von Hardware-Komponenten umfasst, die eine erste Hardware-Konfiguration aufweisen, wobei das Verfahren umfasst: Auswählen (402) von n Komponenten-Klassen aus der Anzahl von Hardware-Komponenten; Identifizieren (403) aller Komponenten-Instanzen innerhalb jeder der n Komponenten-Klassen; Generieren (404415) einer Vielzahl von Hash-Ergebnissen, wobei die Vielzahl von Hash-Ergebnissen ein Hash-Ergebnis für jede Komponenten-Instanz und wenigstens ein Hash-Ergebnis für die n Komponenten-Klassen umfasst; und Verknüpfen (416) der Vielzahl von Hash-Ergebnissen, um einen Hash-Abschnitt auszubilden, wobei der Hash-Abschnitt die ausführliche Hardware-Identifizierung für das erste Computersystem bildet, und wobei Erzeugen der Vielzahl von Hash-Ergebnissen umfasst: Zuweisen (404) eines Identifizierungs-Strings für jede Komponenten-Instanz; Addieren (415) eines Wertes zu dem Identifizierungs-String jeder Komponenten-Instanz, um die Erzeugung verschiedener ausführlicher Hardware-Identifizierungen auf Basis der gleichen Computer-Hardware-Konfiguration zu ermöglichen; und Durchführen (415) einer Hash-Funktion an den Identifizierungs-Strings, zu denen der Wert addiert wurde, um die Hash-Ergebnisse der jeweiligen Komponenten-Instanz zu erzeugen, die in der Vielzahl von Hash-Ergebnissen enthalten sind.
  2. Verfahren nach Anspruch 1, das des Weiteren umfasst: Verknüpfen (417) 1. eines Header-Abschnitts, 2. eines Zählabschnitts und 3. des Hash-Abschnitts der ausführlichen Hardware-Identifizierung, um die ausführliche Hardware-Identifizierung für das erste Computersystem auszubilden.
  3. Verfahren nach Anspruch 1, wobei n eine ganze Zahl bis ungefähr 16 ist.
  4. Verfahren nach Anspruch 2, wobei der Header-Abschnitt (a) eine Versionsnummer und (b) 1. ein Hash-Ergebnis, das aus einem Schritt des Durchführens einer Hash-Funktion an einem Identifizierungs-String einer Klasse mit einer einzelnen Instanz resultiert, 2. einen trunkierten Identifizierungs-String für eine Klasse mit einer einzelnen Instanz oder 3. einen Identifizierungs-String für eine Klasse mit einer einzelnen Instanz umfasst.
  5. Verfahren nach Anspruch 4, wobei Komponenten (a) und (b) verknüpft werden, um den Header-Abschnitt auszubilden.
  6. Verfahren nach Anspruch 2, wobei der Header-Abschnitt (a) eine Versionsnummer und (b) 1. ein Hash-Ergebnis, das aus einem Schritt des Durchführens einer Hash-Funktion an einem Identifizierungs-String einer Klasse mit einer Instanz resultiert, 2. einen verkürzten Identifizierungs-String für eine Klasse mit einer Instanz, oder 3. einen Identifizierungs-String für eine Klasse mit einer Instanz umfasst.
  7. Verfahren nach Anspruch 2, wobei der Zählabschnitt einen verknüpften String von n Zahlen umfasst, wobei jede Zahl die Zahl von Komponenten-Instanzen innerhalb der n Komponenten-Klassen darstellt.
  8. Verfahren nach Anspruch 1, wobei wenigstens eine Komponenten-Klasse zwei oder mehr Komponenten-Instanzen enthält.
  9. Verfahren nach Anspruch 1, wobei jede Komponenten-Klasse von 0 bis ungefähr 14 Komponenten-Instanzen enthält.
  10. Verfahren nach Anspruch 1, wobei jedes Hash-Ergebnis auf eine 16-Bit-Zahl trunkiert wird.
  11. Verfahren nach Anspruch 4, wobei das Hash-Ergebnis auf eine 16-Bit-Zahl trunkiert wird.
  12. Verfahren nach Anspruch 1, wobei das Verfahren während eines Schritts des Ladens eines Software-Erzeugnisses auf das erste Computersystem in Gang gesetzt wird.
  13. Verfahren, mit dem bestimmt wird, ob ein Software-Erzeugnis auf einem zweiten Computersystem mit einer zweiten Hardware-Konfiguration eingesetzt werden kann, wobei das zweite Computersystem identisch mit dem ersten Computersystem ist oder sich von ihm unterscheidet und das Verfahren umfasst: Generieren (502) einer zweiten ausführlichen Hardware-Identifizierung für die zweite Hardware-Konfiguration durch Durchführen der Verfahrensschritte nach einem der Ansprüche 1 bis 12; Vergleichen (504) der zweiten ausführlichen Hardware-Identifizierung für die zweite Hardware-Konfiguration mit der ausführlichen Hardware-Identifizierung für die erste Hardware-Konfiguration, die mit dem Verfahren nach einem der Ansprüche 1 bis 12 generiert wird; wenn eine Anzahl von Übereinstimmungen zwischen Komponenten-Klassen der zweiten Hardware-Konfiguration und entsprechenden Komponenten-Klassen der ersten Hardware-Konfiguration existiert und die Anzahl von Übereinstimmungen m, d. h. einer Anzahl erforderlicher Komponenten-Klassen-Übereinstimmungen, gleich ist oder übersteigt, Laden (506) des Software-Erzeugnisses auf das zweite Computersystem; und wenn die Anzahl von Übereinstimmungen kleiner als m ist, Verhindern (507), dass das Software-Erzeugnis auf das zweite Computersystem geladen wird.
  14. Verfahren nach Anspruch 13, wobei eine Übereinstimmung zwischen einer Komponenten-Klasse der zweiten Hardware-Konfiguration und einer entsprechenden Komponenten-Klasse der ersten Hardware-Konfiguration existiert, wenn ein Hash-Ergebnis, das eine Komponenten-Instanz innerhalb der Komponenten-Klasse der zweiten Hardware-Konfiguration darstellt, mit einem der Hash-Ergebnisse der entsprechenden Komponenten-Klasse in der ersten Hardware-Konfiguration übereinstimmt.
  15. Verfahren nach Anspruch 13, wobei eine einzelne Übereinstimmung zwischen einer Komponentenklasse der zweiten Hardware-Konfiguration und einer entsprechenden Komponenten-Klasse der ersten Hardware-Konfiguration existiert, wenn zwei oder mehr Hash-Ergebnisse, die zwei oder mehr Komponenten-Instanzen innerhalb der Komponenten-Klasse der zweiten Hardware-Konfiguration darstellen, mit zwei oder mehr der Hash-Ergebnisse von der entsprechenden Komponenten-Klasse in der ersten Hardware-Konfiguration übereinstimmen.
  16. Verfahren nach Anspruch 13, wobei keine Übereinstimmung zwischen einer Komponenten-Klasse der zweiten Hardware-Konfiguration und einer entsprechenden Komponenten-Klasse der ersten Hardware-Konfiguration existiert, wenn 1. die Komponenten-Klasse in der ersten Hardware-Konfiguration keine Komponenten-Instanz enthält und die entsprechende Komponenten-Klasse in der zweiten Hardware-Konfiguration eine Komponenten-Instanz enthält, und 2. die Komponenten-Klasse in der ersten Hardware-Konfiguration eine einzelne Komponenten-Instanz enthält und die entsprechende Komponenten-Klasse in der zweiten Hardware-Konfiguration keine Komponenten-Instanz enthält.
  17. Verfahren nach Anspruch 13, wobei m gleich (n – 3) ist.
  18. Computersystem, das wenigstens ein Anwendungsmodul enthält, das auf dem Computersystem verwendet werden kann, wobei das wenigstens eine Anwendungsmodul Anwendungs-Code zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 17 umfasst.
  19. Computerlesbares Medium, auf dem durch Computer ausführbare Befehle zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 17 gespeichert sind.
DE602004010563T 2003-03-03 2004-03-02 Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem Expired - Lifetime DE602004010563T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/378,346 US7290149B2 (en) 2003-03-03 2003-03-03 Verbose hardware identification for binding a software package to a computer system having tolerance for hardware changes
US378346 2003-03-03

Publications (2)

Publication Number Publication Date
DE602004010563D1 DE602004010563D1 (de) 2008-01-24
DE602004010563T2 true DE602004010563T2 (de) 2008-12-11

Family

ID=32908205

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004010563T Expired - Lifetime DE602004010563T2 (de) 2003-03-03 2004-03-02 Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem

Country Status (20)

Country Link
US (1) US7290149B2 (de)
EP (1) EP1469369B1 (de)
JP (1) JP4652702B2 (de)
KR (1) KR101021386B1 (de)
CN (1) CN100371845C (de)
AT (1) ATE381050T1 (de)
AU (1) AU2004200682B2 (de)
BR (1) BRPI0400379A (de)
CA (1) CA2458769A1 (de)
DE (1) DE602004010563T2 (de)
DK (1) DK1469369T3 (de)
ES (1) ES2297289T3 (de)
HK (1) HK1069240A1 (de)
MX (1) MXPA04002025A (de)
MY (1) MY143063A (de)
PL (1) PL1469369T3 (de)
PT (1) PT1469369E (de)
RU (1) RU2345405C2 (de)
TW (1) TWI339334B (de)
ZA (1) ZA200401492B (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278131B2 (en) * 2003-03-03 2007-10-02 Microsoft Corporation Compact hardware identification for binding a software package to a computer system having tolerance for hardware changes
US7836121B2 (en) * 2004-04-14 2010-11-16 Ipass Inc. Dynamic executable
US20060064488A1 (en) * 2004-09-17 2006-03-23 Ebert Robert F Electronic software distribution method and system using a digital rights management method based on hardware identification
US8738822B2 (en) * 2005-05-03 2014-05-27 Flexera Software Llc System and method for controlling operation of a component on a computer system
US9425958B2 (en) * 2005-08-05 2016-08-23 Hewlett Packard Enterprise Development Lp System, method and apparatus for cryptography key management for mobile devices
US8495389B2 (en) * 2005-12-16 2013-07-23 Safenet, Inc. Locking changing hard disk content to a hardware token
ZA200807344B (en) 2006-02-27 2009-07-29 It Crimes Cc Method and system for registering a device
IL174619A (en) * 2006-03-29 2013-12-31 Nds Ltd Password protection
US8769703B2 (en) * 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
US8839451B1 (en) * 2006-08-07 2014-09-16 Moka5, Inc. Activation and security of software
CN101404573B (zh) * 2008-10-27 2014-11-19 北京大学 一种授权方法、系统及装置
US20100332400A1 (en) * 2009-06-24 2010-12-30 Craig Stephen Etchegoyen Use of Fingerprint with an On-Line or Networked Payment Authorization System
ES2782329T3 (es) * 2009-09-22 2020-09-14 Amadeus Sas Proceso para asegurar la comunicación de un archivo digital a través de una red de comunicación
US9235399B2 (en) * 2010-01-15 2016-01-12 Dell Products L.P. System and method for manufacturing and personalizing computing devices
US10387927B2 (en) * 2010-01-15 2019-08-20 Dell Products L.P. System and method for entitling digital assets
US9256899B2 (en) * 2010-01-15 2016-02-09 Dell Products, L.P. System and method for separation of software purchase from fulfillment
US9100396B2 (en) * 2010-01-29 2015-08-04 Dell Products L.P. System and method for identifying systems and replacing components
US8170783B2 (en) 2010-03-16 2012-05-01 Dell Products L.P. System and method for handling software activation in entitlement
EP2686806B1 (de) * 2011-03-15 2019-09-11 Irdeto B.V. Änderungstolerantes verfahren zur erzeugung eines identifikators zum sammeln von ressourcen einer rechnerumgebung mit einem schema zur gemeinsamen nutzung geheimer informationen
US9967089B2 (en) 2011-03-15 2018-05-08 Irdeto B.V. Change-tolerant method for generating identifier for collection of assets in computing environment using error-correction code scheme
US9246882B2 (en) * 2011-08-30 2016-01-26 Nokia Technologies Oy Method and apparatus for providing a structured and partially regenerable identifier
DE102011054842A1 (de) * 2011-10-27 2013-05-02 Wincor Nixdorf International Gmbh Vorrichtung zur Handhabung von Wertscheinen und/oder Münzen sowie Verfahren zur Initialisierung und zum Betrieb einer solchen Vorrichtung
US8949401B2 (en) 2012-06-14 2015-02-03 Dell Products L.P. Automated digital migration
US9779219B2 (en) 2012-08-09 2017-10-03 Dell Products L.P. Method and system for late binding of option features associated with a device using at least in part license and unique ID information
RU2016130451A (ru) * 2013-12-30 2018-02-07 Общество с ограниченной ответственностью "Мэйл.Ру" Способ и система помощи пользователю при аварийных завершениях приложения программного обеспечения
US9953144B2 (en) * 2014-03-27 2018-04-24 Nxp B.V. Constellation based device binding
US10063445B1 (en) * 2014-06-20 2018-08-28 Amazon Technologies, Inc. Detecting misconfiguration during software deployment
FR3048528B1 (fr) * 2016-03-07 2018-09-21 Idemia France Procede de verification de l'integrite d'un dispositif electronique, et dispositif electronique correspondant
DE102017214591A1 (de) * 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Gerätes
DE102017214584A1 (de) * 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Gerätes
US10496153B2 (en) * 2017-10-27 2019-12-03 EMC IP Holding Company LLC Method and system for binding chassis and components
US11075925B2 (en) * 2018-01-31 2021-07-27 EMC IP Holding Company LLC System and method to enable component inventory and compliance in the platform
US10693722B2 (en) 2018-03-28 2020-06-23 Dell Products L.P. Agentless method to bring solution and cluster awareness into infrastructure and support management portals
US10514907B2 (en) 2018-03-28 2019-12-24 EMC IP Holding Company LLC System and method for out-of-the-box solution-level management via logical architecture awareness
US10754708B2 (en) 2018-03-28 2020-08-25 EMC IP Holding Company LLC Orchestrator and console agnostic method to deploy infrastructure through self-describing deployment templates
US10795756B2 (en) 2018-04-24 2020-10-06 EMC IP Holding Company LLC System and method to predictively service and support the solution
US11086738B2 (en) 2018-04-24 2021-08-10 EMC IP Holding Company LLC System and method to automate solution level contextual support
US11599422B2 (en) 2018-10-16 2023-03-07 EMC IP Holding Company LLC System and method for device independent backup in distributed system
US11093656B2 (en) * 2018-11-14 2021-08-17 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment
US20200220865A1 (en) * 2019-01-04 2020-07-09 T-Mobile Usa, Inc. Holistic module authentication with a device
US10862761B2 (en) 2019-04-29 2020-12-08 EMC IP Holding Company LLC System and method for management of distributed systems
US11301557B2 (en) 2019-07-19 2022-04-12 Dell Products L.P. System and method for data processing device management

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61220030A (ja) * 1985-03-26 1986-09-30 Toshiba Corp ソフトウエア識別方式
US4688169A (en) * 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
JPS63296136A (ja) * 1987-05-27 1988-12-02 Nec Corp プログラムの正当性確認方法
US5757907A (en) 1994-04-25 1998-05-26 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for generating a machine-dependent identification
US5734819A (en) 1994-10-12 1998-03-31 International Business Machines Corporation Method and apparatus for validating system operation
JPH1027035A (ja) * 1996-07-12 1998-01-27 Fujitsu Ltd 情報処理装置
US6148407A (en) * 1997-09-30 2000-11-14 Intel Corporation Method and apparatus for producing computer platform fingerprints
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US6243468B1 (en) * 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US7503072B2 (en) * 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6044471A (en) * 1998-06-04 2000-03-28 Z4 Technologies, Inc. Method and apparatus for securing software to reduce unauthorized use
US6792113B1 (en) * 1999-12-20 2004-09-14 Microsoft Corporation Adaptable security mechanism for preventing unauthorized access of digital data
US6952770B1 (en) * 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US7051200B1 (en) * 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
US6931545B1 (en) * 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
JP3840399B2 (ja) 2000-12-05 2006-11-01 健太 堀 ソフトウエアの不正利用防止方法及びプログラム並びに記憶媒体
US20030061488A1 (en) * 2001-09-25 2003-03-27 Michael Huebler Cloning protection for electronic equipment
GB2381087A (en) * 2001-10-15 2003-04-23 Simon Alan Spacey Method for the secure distribution and use of electronic media
US7302590B2 (en) * 2003-01-06 2007-11-27 Microsoft Corporation Systems and methods for providing time-and weight-based flexibly tolerant hardware ID

Also Published As

Publication number Publication date
EP1469369B1 (de) 2007-12-12
AU2004200682A1 (en) 2004-09-23
CN100371845C (zh) 2008-02-27
DE602004010563D1 (de) 2008-01-24
KR101021386B1 (ko) 2011-03-14
CN1530791A (zh) 2004-09-22
ES2297289T3 (es) 2008-05-01
HK1069240A1 (en) 2005-05-13
AU2004200682B2 (en) 2009-12-10
DK1469369T3 (da) 2008-05-05
JP2004295871A (ja) 2004-10-21
JP4652702B2 (ja) 2011-03-16
PT1469369E (pt) 2008-02-08
CA2458769A1 (en) 2004-09-03
RU2345405C2 (ru) 2009-01-27
MXPA04002025A (es) 2005-02-17
PL1469369T3 (pl) 2008-05-30
RU2004106184A (ru) 2005-08-10
US20040177168A1 (en) 2004-09-09
TW200426576A (en) 2004-12-01
EP1469369A3 (de) 2004-11-03
ATE381050T1 (de) 2007-12-15
KR20040078592A (ko) 2004-09-10
ZA200401492B (en) 2004-12-20
BRPI0400379A (pt) 2005-01-04
TWI339334B (en) 2011-03-21
US7290149B2 (en) 2007-10-30
MY143063A (en) 2011-02-28
EP1469369A2 (de) 2004-10-20

Similar Documents

Publication Publication Date Title
DE602004010563T2 (de) Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE60102555T2 (de) Verhinderung der map-aktivierten modulmaskeradeangriffe
DE202011111121U1 (de) System zum Erfassen komplexer Schadsoftware
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE112011103048B4 (de) Ein Verfahren zum Beglaubigen einer Vielzahl von Datenverarbeitungssystemen
DE69634684T2 (de) Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen
DE3855475T2 (de) Software-Verwaltungsstruktur
DE60303753T2 (de) Selektives Erkennen von böswilligem Rechnercode
DE112011103829B4 (de) Verfahren und System zum Erzeugen einer virtuellen Maschine auf der Grundlage von Vorlagen
DE10126752A1 (de) Virusprüfung und -meldung für Suchergebnisse von Computerdatenbanken
DE112010003971T5 (de) Vorübergehende Bereitstellung höherer Vorrechte für ein Rechensystem für eine Benutzerkennung
DE112010004526T5 (de) System, Verfahren und Vorrichtung für eine Gleichzeitige Festlegung und Durchsetzung von Richtlinien zur Zugriffskontrolle und Integrität
DE112012000526T5 (de) Malware - Erkennung
DE112019005729T5 (de) Erkennen von sicherheitsrisiken in zusammenhang mit einer software-komponente
DE112012004247T5 (de) Passives Überwachen virtueller Systeme unter Verwendung einer erweiterbaren Indexierung
DE10300545A1 (de) Vorrichtung, Verfahren, Speichermedium und Datenstruktur zur Kennzeichnung und Speicherung von Daten
DE102017106016A1 (de) System und Verfahren zur Erkennung von Befehlssequenzen von Interesse
DE112012002600T5 (de) Informationsverarbeitungsvorrichtung, -verfahren und -programm zum Verwalten vertraulicher Informationen
DE102021110515A1 (de) Laufzeitanwendungsüberwachung ohne änderung des anwendungsprogrammcodes
EP2362321A1 (de) Verfahren und System zum Erkennen einer Schadsoftware
DE102021127237A1 (de) Messbehälter
DE112011100196B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Überprüfen von sicheren Daten
DE112014002877T5 (de) Passives Überwachen von virtuellen Systemen mithilfe von agentenunabhängiger, echtzeitnaher Indexierung
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software

Legal Events

Date Code Title Description
8364 No opposition during term of opposition