DE602004000106T2 - System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen - Google Patents

System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen Download PDF

Info

Publication number
DE602004000106T2
DE602004000106T2 DE602004000106T DE602004000106T DE602004000106T2 DE 602004000106 T2 DE602004000106 T2 DE 602004000106T2 DE 602004000106 T DE602004000106 T DE 602004000106T DE 602004000106 T DE602004000106 T DE 602004000106T DE 602004000106 T2 DE602004000106 T2 DE 602004000106T2
Authority
DE
Germany
Prior art keywords
class
component
instance
computer system
computer
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
DE602004000106T
Other languages
English (en)
Other versions
DE602004000106T8 (de
DE602004000106D1 (de
Inventor
T. Aidan Hughes
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 DE602004000106D1 publication Critical patent/DE602004000106D1/de
Application granted granted Critical
Publication of DE602004000106T2 publication Critical patent/DE602004000106T2/de
Publication of DE602004000106T8 publication Critical patent/DE602004000106T8/de
Active legal-status Critical Current

Links

Classifications

    • 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • DTEXTILES; PAPER
    • D01NATURAL OR MAN-MADE THREADS OR FIBRES; SPINNING
    • D01DMECHANICAL METHODS OR APPARATUS IN THE MANUFACTURE OF ARTIFICIAL FILAMENTS, THREADS, FIBRES, BRISTLES OR RIBBONS
    • D01D1/00Treatment of filament-forming or like material
    • D01D1/10Filtering or de-aerating the spinning solution or melt
    • D01D1/106Filtering
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61PSPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
    • A61P31/00Antiinfectives, i.e. antibiotics, antiseptics, chemotherapeutics
    • A61P31/04Antibacterial agents
    • 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00086Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
    • G11B20/00731Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction
    • G11B20/00746Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction wherein the usage restriction can be expressed as a specific number
    • G11B20/00782Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving a digital rights management system for enforcing a usage restriction wherein the usage restriction can be expressed as a specific number wherein the usage restriction limits the number of times a program can be installed

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Organic Chemistry (AREA)
  • General Chemical & Material Sciences (AREA)
  • Veterinary Medicine (AREA)
  • General Health & Medical Sciences (AREA)
  • Mechanical Engineering (AREA)
  • Textile Engineering (AREA)
  • Animal Behavior & Ethology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Pharmacology & Pharmacy (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Medicinal Chemistry (AREA)
  • Public Health (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Chemical & Material Sciences (AREA)
  • Oncology (AREA)
  • Communicable Diseases (AREA)
  • Storage Device Security (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Joining Of Building Structures In Genera (AREA)
  • Package Frames And Binding Bands (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Vorrichtungen und Verfahren zum Binden eines Geheimwerts an ein gegebenes Computer-System. Die vorliegende Erfindung betrifft auch Vorrichtungen und Verfahren zum Erzeugen einer soliden Hardware-Identifizierung (strong hardware identification) für ein gegebenes Computer-System, wobei eine Komponente der soliden Hardware-Identifizierung an einen gebundenen Geheimwert gekoppelt ist. Die resultierende solide Hardware-Identifizierung kann verwendet werden, um die Verwendung von Software auf dem gegebenen Computer-System zu kontrollieren, abhängig von dem Grad der Hardware-Veränderungen an dem Computer-System.
  • HINTERGRUND DER ERFINDUNG
  • Es hat beachtliche Bemühungen in den letzten Jahren gegeben, um die ungesetzliche Benutzung von Computer-Software zu verhindern oder zu minimieren. Aufgrund ihrer Reproduzierbarkeit und einfachen Verteilung, sind Computer-Software-Piraterie und illegale Verwendung von Computer-Software über den Bereich eines Lizenzübereinkommens hinaus alltägliche Ereignisse, welche Software-Herstellern signifikant schaden.
  • Es wurden Verfahren entwickelt mit dem Bestreben, die Vorfälle von Computer-Software-Piraterie und illegaler Verwendung von Computer-Software über den Gültigkeitsbereich eines Lizenzübereinkommens hinaus zu reduzieren. Jedoch verursachen solche Verfahren oft Probleme für rechtmäßige Software-Käufer und Benutzer in Form von Unannehmlichkeiten für den Verbraucher. Zum Beispiel sollte ein Benutzer/Benutzerin, der/die seinen/ihren Computer aufgerüstet hat, in der Lage sein, das Software-Produkt wieder rechtmäßig auf seinem/ihrem aufgerüsteten Gerät zu installieren. Dennoch würden derzeitig verfügbare Verfahren entweder (i) es nicht erlauben, dass die Software installiert wird, oder (ii) den Benutzer (welcher nun verärgert ist) zwingen, den Software-Hersteller um Hilfe zu bitten.
  • Demnach bleibt ein Bedarf für eine verbesserte technische Lösung gegen Piraterie und unrechtmäßige Verwendung bestehen, welche auch die Bedürfnisse und Praktiken eines rechtmäßigen Software-Käufers und Benutzers würdigt und ihnen entgegenkommt.
  • KURZFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung geht auf manche der oben diskutierten Schwierigkeiten und Probleme ein, durch die Entdeckung eines Verfahrens, um einen Geheimwert an ein gegebenes Computer-System zu binden, und durch eine verbesserte Hardware-Identifizierung gekoppelt an den Geheimwert. Die Hardware-Identifizierung der vorliegenden Erfindung stellt ein Verfahren zur Minimierung oder Verhinderung von Software-Piraterie und illegaler Verwendung von Computer-Software über den Bereich eines Lizenzübereinkommens hinaus bereit, während Geräteaufrüstung durch rechtmäßige Software-Benutzer erlaubt ist.
  • Die Hardware-Identifizierung der vorliegenden Erfindung, hierin bezeichnet als eine „solide Hardware-Identifizierung" (SHWID), umfasst zwei separate Komponenten: (1) eine Hardware-Identifizierungs-Komponente und (2) eine Teilgeheimwert-Komponente.
  • Durch Kombinieren (1) einer Hardware-Identifizierungs-Komponente zusammen mit (2) einer Teilgeheimwert-Komponente wird eine sicherere und zuverlässigere solide Hardware-Identifizierung (SHWID) für ein gegebenes Computer-System erzeugt.
  • Die solide Hardware-Identifizierung (SHWID) kann verwendet werden, um eine gegebene Hardware-Identifizierung zu identifizieren, wenn ein Software-Produkt auf einen Computer geladen wird. Die solide Hardware-Identifizierung (SHWID) kann für eine zukünftige Verwendung gespeichert werden, z.B. (i) wenn das gleiche Software-Produkt auf dem gleichen Computer oder einer Variante des gleichen Computers eingeführt ("launched") wird oder (ii) wenn das gleiche Software-Produkt auf einer Variante des gleichen Computers oder eines komplett verschiedenen Computers wieder geladen wird. Zum Beispiel, wenn das gleiche Software-Produkt auf dem gleichen Computer oder einer Variante des gleichen Computers eingeführt wird, wird eine Bestimmung durchgeführt, ob der Geheimwert, welcher an die ursprüngliche solide Hardware-Identifizierung (SHWID) gekoppelt ist, produziert werden kann. Wenn der Geheimwert produziert werden kann, erlaubt es das Verfahren der vorliegenden Erfindung das Software-Produkt einzuführen. Jedoch, wenn der Geheimwert nicht produziert werden kann, wird das Verfahren der vorliegenden Erfindung es nicht erlauben, das Software-Produkt aufgrund von Veränderungen an dem ursprünglichen Hardware-System, über einen gewünschten Grenzwert hinaus, einzuführen.
  • Dementsprechend ist die vorliegende Erfindung auf ein Verfahren zum Binden eines Geheimwertes an ein gegebenes Computer-System gerichtet und an eine solide Hardware-Identifizierung (SHWID), die an den Geheimwert gekoppelt ist. Die vorliegende Erfindung ist des Weiteren gerichtet auf ein Verfahren, um die Verwendung von Software auf einem Computer-System zu verhindern, wenn der Geheimwert, das an die ursprüngliche solide Hardware-Identifizierung (SHWID) gekoppelt ist, auf dem Computer-System nicht abgerufen werden kann.
  • Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden nach einer Durchsicht der folgenden detaillierten Beschreibung der offenbarten Ausgestaltungen und der anhängigen Ansprüche ersichtlich.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Ablauf-Diagramm mit manchen der primären Komponenten einer exemplarischen Arbeitsumgebung zur Ausführung der vorliegenden Erfindung;
  • 2 zeigt ein Ablauf-Diagramm, das exemplarische Schritte zur Ermittlung einer Hardware-Identifizierungs-Komponente der soliden Hardware-Identifizierung (SHWID) zeigt;
  • 3-4 zeigen ein Ablauf-Diagramm, das die exemplarischen Schritte zur Ermittlung einer Teilgeheimwert-Komponente der soliden Hardware-Identifizierung (SHWID) zeigt;
  • 5 ist ein Ablauf-Diagramm, das exemplarische Schritte zum Kombinieren der Hardware-Identifizierungs-Komponente und der Teilgeheimwert-Komponente der soliden Hardware-Identifizierung (SHWID) zeigt; und
  • 6-7 zeigen ein Ablauf-Diagramm, das exemplarische Schritte zeigt, die zur Ermittlung dienen, ob ein Software-Produkt auf einem Computer-Hardware-System verwendet werden kann, wobei das Abrufen eines gebundenen Geheimwertes als Freigabe-Faktor für das Software-Produkt benutzt wird.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Um ein Verständnis der Prinzipien der vorliegenden Erfindung zu fördern, folgen Beschreibungen spezieller Ausführungsformen der Erfindung, und es wurde eine spezielle Sprache verwendet, um die speziellen Ausführungsformen zu beschreiben. Dennoch gilt es als selbstverständlich, dass durch Benutzung der speziellen Sprache keine Einschränkung des Umfangs der Erfindung beabsichtigt ist. Abänderungen, weitere Modifizierungen und weitere Einsatzmöglichkeiten der Prinzipien der vorliegenden Erfindung, die diskutiert werden, sind beabsichtigt in solcher Weise, wie sie beim allgemeinen Fachmann, den die Erfindung betrifft, normalerweise auftreten.
  • Die vorliegende Erfindung ist auf ein Verfahren gerichtet, zum Binden eines Geheimwertes an ein gegebenes Computer-System, und eine solide Hardware-Identifizierung (SHWID), die an den Geheimwert gekoppelt ist. Der Geheimwert umfasst typischerweise eine zufällig selektierte Ganzzahl. Der Geheimwert hat wünschenswerterweise die folgenden Charakteristiken:
    • (1) Geheimwert, S, ist berechenbar bei einer Hardware-Konfiguration H;
    • (2) Geheimwert, S, ist berechenbar bei einer Hardware-Konfiguration H1, welches die Hardware-Konfiguration H nach einer Anzahl von Komponenten-Veränderungen bis zu einem gewünschten Grenzwert von Komponenten-Veränderungen ist; und
    • (3) Geheimwert, S, ist nahezu unmöglich zu berechnen bei irgendeiner anderen Hardware-Konfiguration H2.
  • Der Geheimwert kann benutzt werden, um eine solide Hardware-Identifizierung (SHWID) für ein gegebenes Computer-System zu generieren, das eine Auswahl von Hardware-Komponenten umfasst. Ein exemplarisches Computer-System kann eine Anzahl von Hardware-Komponentenklassen umfassen, einschließlich, aber nicht darauf beschränkt, Festplatten-Laufwerke, optische Disk-Laufwerke wie CD-ROM-Laufwerke, Netzwerk-Karten, Grafikkarten, Read Only Memory (ROM), Random-Access-Memory (RAM), und ein Basic-Input/Output-System (BIOS). Ein exemplarisches Computer-System und eine exemplarische Arbeitsumgebung zum Ausüben der vorliegenden Erfindung sind des Weiteren beschrieben.
  • Exemplarische Arbeitsumgebung
  • Beispielhafte Ausführungsformen der vorliegenden Erfindung werden nachstehend anhand der Zeichnungen beschrieben, in denen gleiche Ziffern die gleichen Elemente in allen verschiedenen Figuren repräsentieren. Zeichnung 1 stellt eine exemplarische Arbeitsumgebung zur Umsetzung der vorliegenden Erfindung dar. Die exemplarische Arbeitsumgebung beinhaltet einen rechnenden Universal-Apparat in Form eines herkömmlichen Personal-Computers 20. Allgemein beinhaltet ein Personal-Computer 20 eine Prozessor-Einheit 21, einen Systemspeicher 22, und einen Systembus 23, der verschiedene System-Komponenten koppelt, inklusive den System-Speicher 22 mit der Prozessor-Einheit 21. Der Systembus 23 kann einer von verschiedenen Busstrukturtypen sein, inklusive einem Speicherbus oder Speicher-Controller, einem Peripheriebus und einem lokalem Bus, der irgendeine von verschiedenen Bus-Architekturen benutzt. Der System-Speicher schließt einen Read Only Memory (ROM) 24 und Random Access Memory (RAM) 25 ein. Ein Basic Input/Output-System (BIOS) 26, das einfache Routinen beinhaltet, die helfen, Informationen zwischen Elementen innerhalb des Personal-Computers 20 zu übertragen, wie z.B. während des Einschaltens, ist im ROM 24 gespeichert.
  • Der Personal-Computer 20 beinhaltet des Weiteren ein Festplatten-Laufwerk 27 zum Lesen von und Schreiben auf eine Festplatte, nicht gezeigt, ein Magnetplatten-Laufwerk 28 zum Lesen von oder Schreiben auf einer austauschbaren magnetischen Disk 29, und einem optischen Disk-Laufwerk 30 zum Lesen von oder Schreiben auf einer austauschbaren optischen Disk 31 wie z.B. einer CD-ROM oder anderem optischen Medium. Festplatten-Laufwerk 27, magnetisches Disk-Laufwerk 28, und optisches Disk-Laufwerk 30 sind mit dem Systembus 23 über eine Festplatten-Laufwerk-Schnittstelle 32 bzw. eine magnetische Disk-Laufwerk-Schnittstelle 33 bzw. einer optischen Disk-Lauf werk-Schnittstelle 34 verbunden. Obwohl die hierin beschriebene beispielhafte Umgebung die Festplatte 27, austauschbare magnetische Disk 29, und austauschbare optische Disk 31 verwendet, soll es von Fachleuten anerkannt sein, dass andere Typen von Computer-lesbaren Medien, welche Daten speichern können, die von einem Computer zugreifbar sind, wie z.B. magnetische Kassetten, Flashmemory-Karten, digitale Video-Disks, Bernoulli-Kassetten, RAMs, ROMs, und ähnliches, ebenso in der exemplarischen Arbeitsumgebung verwendet werden können. Die Laufwerke und deren zugehörige Computer-lesbare Medien bieten permanente Speicherung von Computer-ausführbaren Instruktionen, Datenstrukturen, Programm-Modulen, und anderen Daten für Personal-Computer 20. Zum Beispiel, eine oder mehrere Datendateien 60 (nicht gezeigt) können in dem RAM 25 und/oder auf der Festplatte 27 des Personal-Computers 20 gespeichert werden.
  • Eine Anzahl von Programm-Modulen kann auf der Festplatte 27, der magnetischen Disk 29, der optischen Disk 31, dem ROM 24, oder dem RAM 25 gespeichert werden, einschließlich einem Betriebssystem 35, einem Anwendungsprogramm-Modul 36, andere Programm-Module 37, und Programmdaten 38. Die Programm-Module schließen ein, sind aber nicht darauf begrenzt, Routinen, Unterroutinen, Programme, Objekte, Komponenten, Datenstrukturen etc., welche bestimmte Aufgaben erfüllen oder bestimmte abstrakte Datentypen einbinden. Aspekte der vorliegenden Erfindung können als ein wesentlicher Bestandteil eines Anwendungsprogramm-Moduls 36 oder als Teil eines anderen Programm-Moduls 37 implementiert werden.
  • Ein Benutzer kann Befehle und Informationen in den Personal-Computer 20 durch Eingabegeräte eingeben, wie z.B. eine Tastatur 40 und ein Zeigegerät 42. Andere Eingabegeräte (nicht gezeigt) können ein Mikrofon, ein Joystick, ein Gamepad, Satellitenschüssel, Scanner oder ähnliches einschließen. Diese und andere Eingabegeräte sind oft mit der Prozessoreinheit 22 durch eine serielle Anschluß-Schnittstelle 46, die an den Systembus 23 gekoppelt ist, verbunden, können aber auch durch andere Schnittstellen verbunden sein, wie z.B. ein Parallelanschluss, Spieleanschluss, ein universal serieller Bus (USB) oder ähnliches. Ein Monitor 47 oder anderer Typ eines Anzeigegerätes kann ebenso mit dem Systembus 23 über eine Schnittstelle verbunden sein, wie z.B. ein Video-Adapter 48. Zusätzlich zu dem Monitor umfasst ein Personal Computer üblicherweise andere Peripherie-Ausgabegeräte (nicht gezeigt), wie z.B. Lautsprecher und Drucker.
  • Der Personal-Computer 20 kann in einer Netzwerkumgebung arbeiten, die logische Verbindungen zu einem oder mehreren Remote-Computern 49 hat. Der Remote-Computer 49 kann ein anderer Personal-Computer, ein Server, ein Client, ein Router, ein Netzwerk-PC, ein Peer-Gerät, oder anderer bekannter Netzwerkknoten sein. Während ein Remote-Computer 49 üblicherweise viele oder alle der oben in Bezug auf Personal-Computer 20 beschriebenen Elemente einschließt, ist nur ein Speichergerät 50 in Zeichnung 1 dargestellt. Die logischen Verbindungen, die in Zeichnung 1 gezeigt sind, schließen ein Local Area Network (LAN) 51 und ein Wide Area Network (WAN) 52 ein. Solche Netzwerkumgebungen sind Standard in Büros, unternehmensweiten Computer-Netzwerken, Intranetz und dem Internet.
  • Wenn der Personal-Computer 20 in einer LAN-Netzwerkumgebung verwendet wird, ist der Personal-Computer mit dem Local Area Network 51 durch eine Netzwerk-Schnittstelle oder Adapter 53 verbunden. Wenn er in einer WAN-Netzwerkumgebung verwendet wird, beinhaltet der Personal-Computer 20 typischerweise ein Modem 54 oder anderes Mittel zum Herstellen von Kommunikationen über WAN 52, wie z.B. das Internet. Das Modem 54, welches intern oder extern sein kann, ist mit dem Systembus 23 über eine serielle Anschluss-Schnittstelle 46 verbunden. In einer Netzwerkumgebung können Programm-Module, die bezüglich dem Personal-Computer 20 dargestellt sind, oder Teile davon in dem dezentralen Speichergerät 50 gespeichert werden. Es wird begrüßt, dass die gezeigten Netzwerkverbindungen exemplarisch sind und dass andere Mittel zum Herstellen einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Außerdem werden es Fachleute begrüßen, dass die vorliegende Erfindung in anderen Computer-System-Konfigurationen implementiert werden kann, einschließlich tragbare Geräte, Mehrprozessor-Systeme, auf einem Mikroprozessor basierende oder programmierbare Unterhaltungs-Elektronik, Netzwerk-Personal-Computer, Mini-Computer, Großrechner und ähnliches. Die vorliegende Erfindung kann auch in verteilten Computer-Umgebungen umgesetzt werden, in denen Aufgaben durch dezentrale Verarbeitungsgeräte ausgeführt werden, die durch ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Arbeitsumgebung können Programm-Module sowohl in lokalen als auch entfernten Speichergeräten liegen.
  • Implementierung einer exemplarischen Ausführungsform der vorliegenden Erfindung
  • Wie oben beschrieben, umfasst ein Computer-System üblicherweise mehrere Klassen von Hardware-Komponenten. Des Weiteren kann das Computer-System mehrere Komponenten (z.B. zwei Festplatten-Laufwerke) innerhalb jeder Klasse von Hardware-Komponenten umfassen.
  • Die solide Hardware-Identifizierung (SHWID) der vorliegenden Erfindung berücksichtigt jede Komponente (hierin auch als „Instanz" bezeichnet) innerhalb jeder Klasse von Hardware-Komponenten. Die solide Hardware-Identifizierung (SHWID) der vorliegenden Erfindung berücksichtigt auch den Geheimwert, S, welcher an ein gegebenes Computer-Hardware-System gebunden ist. Ein beispielhaftes Verfahren zum Erzeugen einer soliden Hardware-Identifizierung (SHWID) der vorliegenden Erfindung ist unten gezeigt.
  • Des Weiteren ist unten auch ein Verfahren zum Verwenden der soliden Hardware-Identifizierung (SHWID) als ein Antipiraterie-Hilfsmittel beschrieben.
  • 1. Erzeugen einer soliden Hardware-Identifizierung (SHWID) für ein Computer-System
  • Die solide Hardware-Identifizierung (SHWID) von einem gegebenen Computer-System umfasst zwei verschiedene Komponenten: (1) eine Hardware-Komponente, und (2) eine Teilgeheimwert-Komponente. Beispielhafte Verfahren zum Ermitteln jeder dieser Komponenten werden nachfolgend beschrieben. Die Schritte der beispielhaften Verfahren können durch einen Software-Code innerhalb eines Software-Produkts auf dem Computer eines Verbrauchers, ähnlich dem Computer 20 wie oberhalb mit Bezug auf Zeichnung 1 beschrieben, ausgeführt werden.
  • A. Ermitteln der Hardware-Komponenten von der SHWID
  • Die SHWID der vorliegenden Erfindung umfasst ein Klassenprodukt für jede Klasse von Hardware-Komponenten. Die Hardware-Komponente von der SHWID kann ermittelt werden, wie in Zeichnung 2 gezeigt ist.
  • Wie in Zeichnung 2 gezeigt, beginnt eine beispielhafte Ermittlung von der Hardware-Komponente der SHWID mit dem Schritt 201, indem eine Anzahl von Komponentenklassen, n, ausgewählt wird, um ein gegebenes Computer-System genau zu bestimmen. Wie oberhalb besprochen, kann ein gegebenes Computer-System eine Vielzahl von Hardware-Komponenten und Klassen von Hardware-Komponenten beinhalten. Beispielhafte Hardware-Komponentenklassen beinhalten, sind aber nicht darauf beschränkt, Festplatten-Laufwerke, optische Disk-Laufwerke, Netzwerk-Karten, Soundkarten, Grafikkarten, Read Only Memory (ROM), Random Access Memory (RAM), und ein BIOS-System. Wünschenswerterweise ist, n, die Anzahl von Hardware-Komponentenklassen, eine Ganzzahl im Bereich von ungefähr 2 bis ungefähr 16. Im Allgemeinen ist es wünschenswert, dass n so groß als möglich ist, um (i) ein gegebenes Computer-System genauer zu kennzeichnen, (ii) exakter den Grad der Toleranz eines gegebenen Computer-Systems zu bestimmen und (iii) einen höheren Grad an Sicherheit für den Geheimwert S herzustellen.
  • Nach dem Auswählen der Anzahl von Komponentenklassen n, in Schritt 201, wird jede Komponentenklasse in Schritt 202 identifiziert. Die Komponentenklassen können jede der oben beschriebenen Komponentenklassen beinhalten, wie z.B. die Klasse von Festplatten-Laufwerken. Eine exemplarische Liste von Komponentenklassen ist unterhalb in Tabelle 1 gezeigt.
  • Tabelle 1. Exemplarische Liste von Hardware-Komponentenklassen
    Figure 00090001
  • Wie in Tabelle 1 gezeigt, ist in diesem Beispiel n gleich 4, und die identifizierten Hardware-Komponentenklassen sind: (1) eine CdRom-Klasse; (2) eine Festplatten-Laufwerk-Klasse; (3) eine Netzwerk-Kartenklasse; und (4) eine Bildschirmadapter-Geräteklasse.
  • Nachdem jede Komponente in Schritt 202 identifiziert ist, werden alle Instanzen innerhalb jeder der Hardware-Komponentenklasse in Schritt 203 identifiziert. Wünschenswerterweise wird jede Instanz innerhalb einer bestimmten Komponentenklasse durch die eindeutigste Identifikations-Zeichenfolge, die der Instanz zugehörig ist, repräsentiert. Zum Beispiel kann die Hardware-Konfiguration ein CdRom-Laufwerk enthalten, das von NIC-Corporation hergestellt wurde und eine Identifikationszeichenfolge von "NEC CDRW24 S15" hat. Jedes verfügbare Verfahren zur Ermittlung der eindeutigsten Identifikationszeichenfolge einer gegebenen Instanz, einschließlich Geräteabfragen und Betriebssystem API-Funktionsaufrufe, kann in der folgenden Erfindung verwendet werden. Ein Beispiel einer Computer-Hardware-Konfiguration und der Instanzen innerhalb jeder Hardware-Komponentenklasse ist unterhalb in Tabelle 2 gezeigt.
  • Tabelle 2. Exemplarische Komponenteninstanzen für jede Komponentenklasse
    Figure 00100001
  • Wie oberhalb in Tabelle 2 gezeigt, enthält Klasse 1, die CdRom-Klasse, zwei Komponenten-Instanzen; Klasse 2, die Festplatten-Laufwerksklasse, enthält zwei Komponenten-Instanzen; Klasse 3, die Netzwerk-Kartenklasse, enthält eine Instanz; und Klasse 4, die Bildschirmadapter-Geräteklasse, enthält eine Instanz.
  • In Schritt 205 wird eine Instanz Primzahl für jede Komponenteninstanz durch Verwendung einer Primzahlen-generierenden Funktion f(x) erzeugt. Wünschenswerterweise besitzt die Funktion f(x) die folgenden Charakteristiken:
    • (a) das Ergebnis von f(x) ist eine positive Primzahl;
    • (b) x können irgendwelche Daten sein, mit einer Länge von bis zu ungefähr 65000 Zeichen; und
    • (c) f(x)>2t, wobei t eine Ganzzahl ist, die wünschenswerterweise größer als ungefähr 32 ist. Wünschenswerterweise ist t gleich oder größer als ungefähr 64. Jedoch gibt es keine Beschränkung für den Wert t.
    • (d) Das Ergebnis von f(x) ist deterministisch, basierend auf dem Wert von x.
  • Jede Primzahlen-generierende Funktion f(x) kann in der vorliegenden Erfindung benutzt werden, um eine Primzahl für jede Komponenteninstanz zu erzeugen. Wie oberhalb erläutert, besitzt die Primzahlen-generierende Funktion (x) wünschenswerterweise die obengenannten Charakteristiken. Passende Primzahlen-generierende Funktionen f(x) schließen ein, sind aber nicht darauf beschränkt, Primzahlen-generierende Funktionen f(x), die auf dem Rabin-Miller-Algorithmus basieren, der offenbart wird in Applied Cryptography, Second Edition von Bruce Schneier, Seiten 259-260, dessen Offenbarung hierin durch Bezugnahme vollständig aufgenommen ist.
  • Tabelle 3 bietet unterhalb eine Liste von Instanz-Primzahlen, ip,q, für Komponenteninstanzen einer exemplarischen Hardware-Konfiguration.
  • Tabelle 3. Exemplarische Instanz-Primzahlen für Komponenteninstanzen
    Figure 00110001
  • Wie hierin verwendet, wird die Instanz-Primzahl ip,q verwendet, um die Instanz-Primzahl für eine gegebene Komponenteninstanz, q, innerhalb einer gegebenen Klasse p zu kennzeichnen. Zum Beispiel, wird Instanz-Primzahl i1,2 verwendet; um die Instanz-Primzahl für die Komponenteninstanz in Komponentenklasse 1 (z.B. p = 1) zu identifizieren und noch genauer, die zweite Komponenteninstanz innerhalb der Komponentenklasse 1 und innerhalb der Computer-Hardware-Konfiguration (z.B. q = 2).
  • In einer Ausführungsform der vorliegenden Erfindung kann ein "salt value" zu dem Komponenteninstanz-Kennzeichner hinzugefügt werden, bevor die Instanz-Primzahl für eine gegebene Komponenteninstanz erzeugt wird. In dieser Ausführungsform, ermöglicht das Hinzufügen eines salt value die Herstellung von verschiedenen SHWIDs, basierend auf der gleichen Computer-Hardware-Konfiguration. Salt values, die von dem Applikations-Code oder der Benutzeridentität erhalten werden, ermöglichen verschiedene SHWIDs für verschiedene Applikationen oder Benutzer, die auf derselben Hardware-Konfiguration ausgeführt werden, was von Vorteil sein kann, wenn Daten gesichert werden, die nur durch eine bestimmte Applikation oder bestimmten Benutzer verwendet werden.
  • Sobald Instanz-Primzahlen für jede Komponenteninstanz erzeugt wurden, wird ein Klassenprodukt, cp, für jede Komponentenklasse in Schritt 206 erzeugt. Klassenprodukt, cp, wird durch Multiplizieren der Instanz-Primzahlen innerhalb einer gegebenen Klasse untereinander hergestellt. Exemplarische Klassenprodukte c1 bis c4 werden in der untenstehenden Tabelle 4 gezeigt.
  • Tabelle 4. Exemplarische Klassenprodukte für jede Komponentenklasse
    Figure 00120001
  • Wie in Tabelle 4 gezeigt, ist das Klassenprodukt c1 für die Hardware-Komponentenklasse CdRom gleich dem Produkt von zwei Instanzen, i1,1 und i1,2. Es sollte beachtet werden, dass Klassenprodukte, die von einer einzelnen Instanz-Primzahl resultieren, so wie Klassenprodukt c3, mit zusätzlichen Nicht-Instanz-Primzahlen multipliziert werden können, um die Schwierigkeit des Faktorisierens eines gegebenen Klassenproduktes zu erhöhen. Dies ist insbesondere nützlich für Klassenprodukte, die aus einer einzelnen Instanz-Primzahl gebildet werden, so wie z.B. Klassenprodukt c3 oder Klassenprodukt c4 oben in Tabelle 4 gezeigt. Wenn zusätzliche Nicht-Instanz-Primzahlen benutzt werden, um den Wert des Klassenprodukts zu erhöhen, ist es wünschenswert, dass die zusätzlichen Nicht-Instanz-Primzahlen in dem Bereich von größer als 2, aber kleiner als 2t sind, wobei t eine beliebige Ganzzahl wie oben beschrieben ist. Dies entschärft das Risiko einer ungewollten Kollision mit Instanz-Primzahlen von einer anderen Hardware-Konfiguration.
  • In Schritt 207 wird jedes Klassenprodukt, cp, gespeichert, für die Eingabe in die oben beschriebene solide Klassenidentifizierung, Cp, für jede Komponentenklasse. Des Weiteren wird, wie unten beschrieben, die Kombination von jeder soliden Klassenidentifizierung, Cp für jede Klasse verwendet, um die solide Hardware-Identifizierung (SHWID) für ein gegebenes Computer-Hardware-System herzustellen. Die Klassenprodukte cp repräsentieren die Hardware-Komponente der soliden Hardware-Identifizierung (SHWID) für ein gegebenes Computer-Hardware-System.
  • B. Ermitteln der Teil-Geheimwert-Komponente der SHWID
  • Die solide Hardware-Identifizierung (SHWID) der vorliegenden Erfindung umfasst auch eine Teil-Geheimwert-Komponente für jede Klasse von Hardware-Komponenten. Ein beispielhaftes Verfahren zum Ermitteln der Teil-Geheimwert-Komponente der SHWID ist in den Zeichnungen 3-4 gezeigt. Die Schritte des beispielhaften Verfahrens können durch Software-Code innerhalb eines Software-Produkts auf einem Computer eines Verbrauchers ausgeführt werden, der ähnlich zu dem Computer 20 ist, der oben mit Bezug auf Zeichnung 1 beschrieben wurde.
  • In Schritt 301 dargestellt in 3, wird eine Zufallszahl, rp, für jede Komponentenklasse durch Verwenden eines Zufallszahlengenerators erzeugt. Jeder herkömmliche Zufallszahlengenerator kann zum Erzeugen der Zufallszahl rp verwendet werden. Passende Zufallszahlengeneratoren schließen ein, sind aber nicht darauf beschränkt, die Zufallszahlengeneratoren offenbart in Prime Numbers von Crandell und Pomerance, Chapter 8, dessen Offenbarung hierin durch Bezugnahme vollständig aufgenommen ist. Wünschenswerterweise reicht die Zufallszahl rp von größer oder gleich 0 bis zu, aber weniger als, 2u, wobei u kleiner ist als t, welches oberhalb beschrieben ist. Üblicherweise ist u ungefähr gleich t geteilt durch 3.
  • Durch Verwendung der Zufallszahl rp für jede Hardware-Komponentenklasse, die in Schritt 301 erzeugt wird, werden Klassen-Primzahlen pp in Schritt 302 durch Verwen dung einer Primzahlen-generierenden Funktion, g(rp), erzeugt. Wünschenswerterweise hat die Primzahlen-generierende Funktion g(rp) die folgenden Charakteristiken:
    • (a) das Ergebnis von g(rp) ist eine positive Primzahl;
    • (b) g(rp) ist <2v, wobei v eine ganze Zahl größer als u ist; und
    • (c) u+v=t.
    • (d) das Ergebnis von g(rp) ist deterministisch basierend auf dem Wert von rp.
  • So wie bei der Primzahlen-erzeugenden Funktion f(x) oberhalb beschrieben, kann jede Primzahlen-generierende Funktion g(x) in der vorliegenden Erfindung verwendet werden, um eine Primzahl für jede Zufallszahl rp einer Komponentenklasse zu erzeugen. Wie oberhalb erläutert, besitzt die Primzahlen-generierende Funktion g(x) die obengenannten Charakteristiken. Passende Primzahlen-generierende Funktionen g(x) schließen ein, sind aber nicht darauf beschränkt, Primzahlen-generierende Funktionen g(x) wie offenbart in Applied Cryptography, Second Edition von Bruce Schneier, Seiten 259-260, dessen Offenbarung hierin durch Bezugnahme vollständig aufgenommen ist.
  • Ein Beispiel für die Beziehung zwischen g(rp), t, u und v wird unterhalb gezeigt.
    t = 64
    u = 20
    v = 44
    0 < rp < 2u(220 = 1.048.576)
    2 < g(rp) < 2v
  • Eine beispielhafte Liste von Klassen-Primzahlen pp für jede der n-Klassen (z.B. n = 4) eines exemplarischen Computer-Systems ist unterhalb in Tabelle 5 gezeigt.
  • Tabelle 5. Exemplarische Klassen-Primzahlen für jede Komponentenklasse
    Figure 00140001
  • Figure 00150001
  • Eine beispielhafte Ausgabe, die die Beziehung zwischen Klassen-Primzahlen für eine gegebene Hardware-Konfiguration darstellt, kann wie folgt dargestellt werden:
    2 < p2 < p3 < p1 < p4 < 2v
  • In Schritt 303 wird die Anzahl der notwendigen Übereinstimmungen von Komponentenklassen, m, ausgewählt, in Abhängigkeit von dem gewünschten Grad an Toleranz für Veränderungen von Hardware-Konfigurationskomponenten. Die Anzahl der benötigten Übereinstimmungen von Komponentenklassen, m, kann größer als n, die Gesamtanzahl von Komponentenklassen, sein oder kann kleiner als eins sein. Wenn m steigt, sinkt der Grad der Toleranz zu Veränderungen der Computer-Hardware-Konfiguration. Zum Beispiel, wenn die Gesamtanzahl von Komponentenklassen n gleich 4 und m gleich 3 ist, müssen 3 von den 4 Gesamtkomponentenklassen mit wenigstens einer Komponenteninstanz übereinstimmen, damit der Geheimwert S abgerufen werden kann, welches das Laden oder Ausführen eines Software-Produkts ermöglicht. Wenn die Anzahl von Übereinstimmungen der Komponentenklassen kleiner als 3 ist, wird der Geheimwert S nicht abgerufen, und das Software-Produkt wird nicht ausgeführt oder kann nicht auf die Computer-Hardwarekonfiguration geladen werden.
  • Die Anzahl der notwendigen Übereinstimmungen von Komponentenklassen, m, mag durch einen Software-Hersteller vorbestimmt sein und in das Verfahren zum Erzeugen der SHWID der vorliegenden Erfindung codiert sein. Sobald m selektiert ist, werden zusätzliche Parameter, wie in den Schritten 304 und 305 gezeigt, ermittelt.
  • In Schritt 304 wird der Parameter N ermittelt, wobei N gleich dem Produkt von den m kleinsten Klassen-Primzahlen pp ist. Zum Beispiel sind in dem oben gegebenem Ausgabebeispiel für Klassen-Primzahlen die zwei kleinsten Klassen-Primzahlen p2 und p3. Wenn m gleich 2 ist, ist N gleich (p2) × (p3).
  • In Schritt 305 wird der Parameter M ermittelt, wobei M gleich dem Produkt der (m-1) größten Klassen-Primzahlen pp ist. Zum Beispiel ist in dem oben gegebenem Ausgabebeispiel für Klassen-Primzahlen p4 die größte Klassen-Primzahl. Wenn m gleich 2, dann ist M gleich dem Produkt der einzelnen größten Klassen-Primzahl, p4 (d.h., (M – 1) = 1). Es sollte beachtet werden, dass M kleiner als N sein muss, um sicherzustellen, dass eine Reihe von gegebenen Klassen-Primzahlen einen Schwellenwert m hat. Dies ist eine Umsetzung des Schwellenwert-basierenden Systems zur Geheimwertmitbenutzung wie in The Mathematics of Ciphers von S.C. Coutinho, Kapitel 7, beschrieben, dessen Offenbarung hierin durch Bezugnahme vollständig aufgenommen ist.
  • Sobald die Parameter N und M ermittelt wurden, wird der Geheimwert S in Schritt 306 selektiert. Geheimwert S ist größer als M aber kleiner als N. Des Weiteren ist der Geheimwert S eine Zufallszahl zwischen M und N.
  • In Schritt 307 werden die Klassenrestwerte dp unter Verwendung der folgenden Gleichung berechnet: dp = S mod pp
  • Eine exemplarische Reihe von Klassenrestwerten dp ist unterhalb in der Tabelle 6 gezeigt.
  • Tabelle 6. Exemplarische Klassenrestwerte für jede Komponentenklasse
    Figure 00160001
  • In Schritt 308 wie in 4 gezeigt, werden die Klassen-Primzahlen pp für jede Komponentenklasse in einen ersten binären Wert für jede Komponentenklasse codiert. Jeder der ersten binären Werte hat u Bits. Es sollte beachtet werden, dass jede Klassen-Primzahl pp durch u Bits aufgrund der folgenden Beziehungen repräsentiert werden kann: pp = g(rp),wobei 0 < rp < 2u
    pp kann durch rp dargestellt werden, wenn g(rp) zur Zeit des Abrufens zur Verfügung steht
    rp kann in u Bits dargestellt werden
  • pp kann durch rp repräsentiert werden, wenn g(rp) zum Zeitpunkt des Abrufens zur Verfügung steht, wenn die Primzahlen-generierende Funktion g()aufgrund der folgenden Gründe bekannt ist. Wenn pp gleich g(rp) ist und die Primzahlen-generierende Funktion g() bekannt ist, dann reicht es auch rp zu kennen, um pp durch Ausführen von g() mit dem Parameter rp neu zu erstellen. Das Kodieren von rp benötigt u Bits (oder 20 Bits in dem oben beschriebenen Beispiel), während pp v Bits benötigt (oder 44 Bits in dem oben beschriebenen Beispiel). Ein Verkleinern der benötigten Anzahl von Bits ist durch Darstellung von pp als rp realisiert.
  • In Schritt 309 werden alle der übrigen Klassenrestwerte dp in zweite binäre Werte für jede Komponentenklasse codiert. Die zweiten binären Werte können durch v Bits repräsentiert werden. Es sollte beachtet werden, dass die übrigen Klassenrestwerte dp durch v Bits aufgrund der folgenden Beziehungen dargestellt werden können: dp = S mod pp 0 < pp < 2v
    dadurch gilt, dp < 2v
  • In Schritt 310 wird der erste binäre Wert, der in Schritt 308 erzeugt wurde, mit dem zweiten binären Wert aus Schritt 309 verkettet, um einen codierten Komponentenklassen-Teilgeheimwert, Pp, zu bilden, der eine Gesamtzahl von t Bits hat (d.h. t = u + v). Ein Komponentenklassen-Teilgeheimwert Pp wird für jede Komponentenklasse erzeugt.
  • Es sollte beachtet werden, dass der Klassen-Teilgeheimwert Pp für eine gegebene Komponentenklasse nicht verwendete Bits, z, beinhalten kann, wenn der zweite binäre Wert weniger als v Bits hat. In diesem Fall, können die nicht verwendeten Bits, z, mit zufälligem Rauschen gefüllt werden, um einen Angreifer, der die Beschaffenheit von g(rp) kennt, daran zu hindern, den codierten Klassen-Teilgeheimwert Pp in einem Versuch zur Ermittlung eines Klassen-Teilgeheimwertes Pp zu berechnen. Zum Beispiel wenn pp in dem Bereich 2-2v ist, ist dp immer <pp. Wenn pp signifikant kleiner als 2v ist, dann wird dp signifikant weniger als v Bits zum Codieren benötigen. Ein Angreifer könnte Schätzungen über die Größe von pp aufgrund der Werte von dp machen. Das Hinzufügen von zufälligem Rauschen, um die nicht verwendeten [v – (Größe von (dp))] Bits von dp zu füllen, hilft die Größe von pp zu verbergen.
  • C. Die SHWID für ein Computer-System
  • Die solide Hardware-Identifizierung (SHWID) kann nun konfiguriert werden, durch die Verwendung des Klassenprodukts, cp, welches in Schritt 207 erhalten wurde und durch den Klassen-Teilgeheimwert, Pp, der in Schritt 310 erhalten wurde. Wie in Schritt 401 in Zeichnung 5 gezeigt, werden solide Klassen-Identifikationen (IDs), Cp, für jede Komponentenklasse erzeugt, wobei Cp = cp + Pp. In Schritt 402 werden alle soliden Klassen-IDs, Cp, für die Komponentenklassen kombiniert, um die solide Hardware-Identifizierung (SHWID) zu bilden. Die resultierende SHWID wird für eine zukünftige Bereitstellung gespeichert. Die SHWID wird lokal gespeichert (z.B. in der Registry, dem Dateisystem, oder einem sicheren Speicher) oder in einer zugänglichen Remote-Speicherstelle (z.B. eine Datenbank).
  • Es sollte beachtet werden, dass eine erhöhte Sicherheit erreicht werden kann, durch Erhöhen des Wertes t, um einen Klassen-Teilgeheimwert zu erzeugen, der eine größere Anzahl an Bits hat.
  • II. Abrufen eines Geheimwertes von einem Computer-System durch Verwendung der soliden Hardware-Identifizierung (SHWID)
  • Die vorliegende Erfindung bezieht sich des Weiteren auf ein Verfahren zum Abrufen eines oder zum Versuchen einen gebundenen Gemeinwert S von einer gegebenen Computer-Hardware-Konfiguration abzurufen. In einer Ausführungsform der vorliegenden Erfindung wird das Verfahren zum Versuchen einen gebundenen Geheimwert S von einer gegebenen Computer-Hardware-Konfiguration abzurufen ausgelöst (i) während der Installation eines Software-Produkts, (ii) während des Ladens einer Software-Applikation, die bereits auf einer Komponente der Hardware-Konfiguration existiert, oder (iii) beides. Ein beispielhaftes Verfahren zum Abrufen des gebundenen Geheimwertes S von der Hardware-Konfiguration ist in den Zeichnungen 6-7 beschrieben. Die Schritte des beispielhaften Verfahrens können von Softwarecode innerhalb eines Software-Produkts auf dem Computer eines Verbrauchers ausgeführt werden, der dem Computer 20 ähnlich ist, welcher oberhalb mit Bezug auf Zeichnung 1 beschrieben ist.
  • In Schritt 501, gezeigt in Zeichnung 6, werden die soliden Klassen-IDs, Cp, von der soliden Hardware-Identifizierung (SHWID) für eine gegebene Computer-Hardware-Konfiguration erkannt. Um die vorliegende Erfindung zu erläutern, wird das Verfahren zum Abrufen des gebundenen Geheimwertes S von drei separaten Hardware-Konfigurationen, H, H1 und H2, beschrieben, wobei eine vorher gespeicherte solide Hardware-Identifizierung (SHWID) verwendet wird, welche von der Hardware-Konfiguration, H, ermittelt wurde. Die drei verschiedenen Hardware-Konfigurationen umfassen (i) die exakte Hardware-Konfiguration H, zu der die SHWID ausgestellt wurde; (ii) eine Hardware-Konfiguration H1, welche die Hardware-Konfiguration H umfasst, die eine oder mehrere Komponentenveränderungen innerhalb eines akzeptablen Toleranzwertes hat; und (iii) eine Hardware-Konfiguration H2, welche die Hardware-Konfiguration H repräsentiert, die genügend Komponentenveränderungen hat, so dass die Hardware-Konfiguration H2 außerhalb der Toleranz liegt verglichen mit der Hardware-Konfiguration H.
  • Eine beispielhafte Reihe von soliden Klassen-IDs für die Hardware-Konfigurationen H, H1, und H2 ist unterhalb in Tabelle 7 gezeigt.
  • Tabelle 7. Beispielhafte solide Klassen-IDs für eine Hardware-Konfiguration
    Figure 00190001
  • Figure 00200001
  • In Schritt 502 werden alle Instanzen innerhalb jeder Komponentenklasse von einer gegebenen Hardware-Konfiguration identifiziert. Wie oberhalb beschrieben, kann jedes übliche Verfahren zum Identifizieren jeder Komponenteninstanz verwendet werden. Typischerweise wird eine Komponenteninstanz durch die eindeutigste Identifizierungszeichenfolge für diese Komponente identifiziert. Beispielhafte Identifizierungszeichenfolgen für jede Komponenteninstanz innerhalb der Beispielkonfigurationen H, H1 und H2 werden unterhalb in den Tabellen 8-10 gezeigt.
  • Tabelle 8. Beispielhafte Komponenteninstanzen für Hardware-Konfiguration H
    Figure 00200002
  • Tabelle 9. Exemplarische Komponenteninstanzen für Hardware-Konfiguration N1
    Figure 00200003
  • Figure 00210001
  • Tabelle 10. Exemplarische Komponenteninstanzen für Hardware-Konfiguration H2
    Figure 00210002
  • Sobald alle Instanzen innerhalb jeder Komponentenklasse einer gegebenen Hardware-Konfiguration identifiziert sind, wird die eindeutigste Identifizierungszeichenfolge für jede Instanz abgerufen, wie in Schritt 503 gezeigt. Die Identifizierungszeichenfolgen für jede Instanz werden verwendet, um Instanz-Primzahlen für jede Komponenteninstanz zu erzeugen, wobei eine Primzahlen generierende Funktion f(Komponenteninstanz-Kennzeichner) verwendet wird, wie in Schritt 504 gezeigt. Die Primzahlen generierende Funktion, f(Komponenteninstanz-Kennzeichner) kann jede Primzahlen generierende Funktion sein, die dem Fachmann bekannt ist, wie oben beschrieben. Tabellen 11-13 unterhalb zeigen exemplarische Instanz-Primzahlen für jede der Komponenteninstanzen innerhalb der Beispiel Hardware-Konfigurationen H, H1 und H2.
  • Tabelle 11. Exemplarische Instanz-Primzahlen, ip,q, für Beispiel Hardware-Konfiguration H
    Figure 00210003
  • Figure 00220001
  • Tabelle 12. Exemplarische Instanz-Primzahlen, ip,q, für Beispiel Hardware-Konfiguration H1
    Figure 00220002
  • Tabelle 13. Exemplarische Instanz-Primzahlen, ip,q, für Beispiel Hardware-Konfiguration H2
    Figure 00220003
  • Es sollte beachtet werden, dass die Komponenteninstanz {f("SONY DVD 1221"}, die mit i1,3 bezeichnet ist, angibt, dass dieser Typ von CdRom als der dritte Typ von CdRom in den oben gezeigten Hardware-Konfigurationen (d.h., H, H1 und H2) betrachtet wird.
  • In Schritt 505 werden alle möglichen Klassen-Teilgeheimwerte Pp,q ermittelt, wobei Pp,q gleich Cp mod ip,q ist. Wie oben beschrieben, resultiert die solide Klassen ID, Cp, für jede Komponentenklasse aus der Summe des Klassenprodukts cp plus dem Klassen-Teilgeheimwert Pp für jede Klasse. Wenn die solide Klassen ID, Cp, durch eine Instanz-Primzahl ip,q dividiert wird, die in der ursprünglichen Hardware-Konfiguration H, auf der die solide Hardware ID (SHWID) basiert, präsent war, liefert der Restwert, der aus einer (mod) Funktion folgt, einen möglichen Klassen-Teilgeheimwert Pp,q. Beispielhafte mögliche Klassen-Teilgeheimwerte Pp,q für die Beispiel Hardware-Konfigurationen H, H1 und H2 sind unterhalb in den Tabellen 14-16 gegeben.
  • Tabelle 14. Beispielhafte mögliche Klassen-Teilgeheimwerte Pp,q für jede Komponenteninstanz in der Beispiel Hardware-Konfiguration H
    Figure 00230001
  • Tabelle 15. Beispielhafte mögliche Klassen-Teilgeheimwerte Pp,q für jede Komponenteninstanz in der Beispiel Hardware-Konfiguration H1
    Figure 00230002
  • Tabelle 16. Beispielhafte mögliche Klassen-Teilgeheimwerte Pp,q für jede Komponenteninstanz in der Beispiel Hardware-Konfiguration H2
    Figure 00240001
  • Von jedem der möglichen Teilgeheimwerte Pp,q, können eine Zufallszahl rp und ein Klassenrestwert dp extrahiert werden wie in Schritt 506 gezeigt. Wie oben erläutert, kann die Klassen-Primzahl pp,q durch die Verwendung der Funktion g(rp) abgerufen werden, wobei rp die ersten u Bits des möglichen Klassen-Teilgeheimwertes Pp,q sind. Die Klassenrestwerte dp,q können von den letzten v Bits des Klassen-Teilgeheimwertes Pp,q abgerufen werden. Eine beispielhafte Liste aller möglichen Klassen-Primzahlen pp,q und Klassenrestwerte dp,q für die Beispiel Hardware-Konfigurationen H, H1 und H2 sind unterhalb in den Tabellen 17-19 gegeben.
  • Tabelle 17. Beispielhafte Klassen-Primzahlen pp,q und Klassenrestwerte dp,q für jeden möglichen Klassen-Teilgeheimwert Pp,q der Beispiel Hardware-Konfiguration H
    Figure 00240002
  • Tabelle 18. Beispielhafte Klassen-Primzahlen pp,q und Klassenrestwerte dp,q für jeden möglichen Klassen-Teilgeheimwert Pp,q der Beispiel Hardware-Konfiguration H1
    Figure 00250001
  • Tabelle 19. Beispielhafte Klassen-Primzahlen pp,q und Klassenrestwerte dp,q für jeden möglichen Klassen-Teilgeheimwert Pp,q der Beispiel Hardware-Konfiguration H2
    Figure 00250002
  • Sobald alle möglichen Klassen-Primzahlen und Klassenrestwerte in Schritt 506 ermittelt sind, bilden sie eine Reihe von Kongruenzen. S ist ein großer Wert, welcher, wenn er durch die möglichen Klassen-Primzahlen pp,q geteilt wird, die Klassenrestwerte dp,q für eine gegebene Reihe von Kongruenzen ergibt. Weil S sorgfältig ausgewählt ist (d.h. S liegt zwischen M und N) und alle Divisoren Primzahlen sind, muss die Lösung der Reihen von Kongruenzen durch Verwendung der möglichen Klassen-Primzahlen und Klassenrestwerte, die zwischen M und N fallen, S sein. Die sorgfältige Auswahl von S in Schritt 306 garantiert, dass nur N übereinstimmende Elemente der Reihe von Kon gruenzen benötigt werden, um einen korrekten Wert für S zu erzeugen. Dies ist ein klassisches Schwellenwert-basiertes geheimnisteilendes Modell wie in The Mathematics of Ciphers von S.C. Coutinho, Kapitel 7, beschrieben, dessen Offenbarung hierin durch Bezugnahme vollständig aufgenommen ist.
  • Es ist möglich, vorzeitig zu ermitteln, welche, wenn überhaupt, möglichen Klassen-Primzahlen und Restwerte mit der gewünschten Hardware-Konfiguration übereinstimmen, und somit ist es notwendig, mögliche Geheimwerte für jede Permutation von möglichen Klassen-Primzahlen und Klassenrestwerten durch Lösen der diskreten Reihe von Kongruenzen zu erzeugen, welche bei jeder Permutation in Schritt 507 aufgezeigt werden. Wie in Schritt 508 gezeigt, können die resultierenden möglichen Geheimwerte durch Verwendung von chiffriertem Text getestet werden, der für Prüfzwecke erzeugt wird. Solch ein Prozess ist unterhalb beschrieben.
  • In der vorliegenden Erfindung wird bekannter Klartext unter Verwendung des Geheimwertes S als ein Schlüssel zum Bilden von chiffriertem Text codiert. Typischerweise ist eine verschlüsselte Nachricht (d.h., der chiffrierte Text) von einem Prüfungstoken begleitet, der einem Dechiffrieren wissen lässt, dass die Nachricht erfolgreich verschlüsselt wurde. Dies ist üblicherweise entweder ein Hash des Klartextes der Nachricht oder eines ausgewählten Klartextes. In der vorliegenden Erfindung, ist der Einfachheit halber ausgewählter Klartext gewünscht. Damit wird, wenn die SHWID erzeugt wird, der ausgewählte Klartext (z.B. "Dies ist ein ausgewählter Klartext") durch Verwendung von S (d.h., als ein Schlüssel) verschlüsselt, um den chiffrierten Text zu erzeugen. Der Decoder kennt beides, den ausgewählten Klartext und den chiffrierten Text.
  • In der oben beschriebenen Situation kann die Gültigkeit eines Kandidaten für S (d.h. jeder der resultierenden möglichen Geheimwerte) verifiziert werden, durch Dechiffrieren des chiffrierten Textes unter Verwendung des Kandidaten für S (d.h., jeder der resultierenden möglichen Geheimwerte) als den Schlüssel. Wenn der resultierende Klartext mit dem gewählten Klartext übereinstimmt, dann ist der Kandidat für S (d.h. einer der resultierenden möglichen Gemeinwerte) tatsächlich S. Wenn der resultierende Klartext nicht mit dem ausgewählten Klartext übereinstimmt, dann ist der Kandidat für S (d.h., einer der resultierenden möglichen Geheimwerte) nicht S.
  • Wie in Zeichnung 7 gezeigt, wenn der bekannte Klartext durch Decodieren des chiffrierten Textes unter Verwendung des möglichen Gemeinwertes aufgedeckt wird, dann wurde der Geheimwert S gefunden und das Verfahren setzt bei Schritt 510 fort, wobei das Programm es ermöglicht, ein gegebenes Software-Produkt auf der gegebenen Computer-Hardware-Konfiguration zu laden oder in installieren. Andererseits setzt das Verfahren bei Schritt 509 fort. Wenn mehr Permutationen existieren, die noch nicht getestet wurden, geht das Verfahren zu Schritt 507 zurück. Andernfalls stimmt die SHWID nicht überein und das Verfahren setzt mit Schritt 511 fort, welcher das Laden oder Installieren des Software-Produkts verhindert.
  • Beispielhafte Ergebnisse für die Beispielkonfigurationen H, H1 und H2 sind unterhalb in den Tabellen 20-22 gegeben.
  • Tabelle 20. Beispielhaftes Ergebnis, das die Anzahl von Übereinstimmungen zwischen möglichen Geheimwerten Sp,q und tatsächlichem Geheimwert S für die Beispiel Hardware-Konfiguration H zeigt
    Figure 00270001
  • Tabelle 21. Beispielhaftes Ergebnis, das die Anzahl von Übereinstimmungen zwischen möglichen Geheimwerten Sp,q und tatsächlichem Geheimwert S für die Beispiel Hardware-Konfiguration H1 zeigt
    Figure 00270002
  • Figure 00280001
  • Tabelle 22. Beispielhaftes Ergebnis, das die Anzahl von Übereinstimmungen zwischen möglichen Geheimwerten Sp,q und tatsächlichem Geheimwert S für die Beispiel Hardware-Konfiguration H2 zeigt
    Figure 00280002
  • Wie in Tabelle 20 oberhalb gezeigt, hat die Original Hardware-Konfiguration H als Ergebnis vier von vier Übereinstimmungen zwischen möglichen Geheimwerten Sp,q und tatsächlichem Geheimwert S. Wie in Tabelle 21 oberhalb gezeigt, hat die Hardware-Konfiguration H1 ein Maximum von zwei Übereinstimmungen von vier möglichen Übereinstimmungen, abhängig davon, welcher Klassenrestwert dp,q verwendet wird, um den möglichen Geheimwert S zu ermitteln. In dieser Beispiel Hardware-Konfiguration, wenn m gleich 2 ist, erlaubt es das Programm, den gebundenen Geheimwert S abzurufen, und ein Software-Produkt auf der Hardware-Konfiguration H1 zu laden oder zu installieren. Jedoch ergibt sich in Hardware-Konfiguration H2 die oberhalb in Tabelle 22 gezeigt nur eine von vier möglichen Übereinstimmungen. Wenn m gleich 2 ist, werden falsche Nicht-Geheimwerte Z1 erzeugt, und das Verfahren verhindert, dass ein bestimmtes Software-Produkt auf der Hardware-Konfiguration H2 geladen oder installiert wird.
  • Die Verfahrensschritte wie oberhalb beschrieben und in den 2, 3-4, 5, und 6-7 dargestellt können lokal oder an einer Remote-Stelle ausgeführt werden. Typischerweise kauft ein Kunde ein Software-Produkt, das auf einem gegebenen Computer laufen kann, wie z.B. Computer 20 in 1 gezeigt. Das Software-Produkt kann ein schrumpffolienverpacktes Produkt sein, welches ein Software-Programm auf einem transportablen Computer lesbaren Medium gespeichert hat, wie z.B. eine CD-ROM oder Floppy-Disk. Alternativ kann das Software-Produkt elektronisch über ein Netzwerk geliefert werden, wie z.B. ein Local Area Network (LAN) 51 oder ein Wide Area Network (WAN) 52. Der Kunde lädt das Software-Produkt auf seinen Computer 20 als ein Programm, das in dem Systemspeicher 22 gespeichert ist.
  • Während einer Software-Produktinstallation wird der Kunde üblicherweise aufgefordert einen Teil der Software-Produktidentifikation (PID) für das Software-Produkt in den Computer 20 einzugeben. Die PID kann z.B. ein CD-Schlüssel sein, der auf ein Etikett der Schrumpffolienverpackung gedruckt ist. Der Verbraucher gibt die PID ein, welche zu einem Software-Programm des Software-Produkts zugehörig ist. Die PID wird lokal auf den Computer 20 und/oder remote an einer zugänglichen Stelle, entweder im Local Area Network (LAN) 51 oder im Wide Area Network (WAN) 52 bei einem externen Dritten, wie z.B. einer Aktivierungsstelle, gespeichert.
  • Wie oberhalb beschrieben wird während der Installation des Software-Produkts eine solide Hardware-Identifizierung (SHWID) auch erzeugt durch Verwendung von Code innerhalb des Software-Produkts oder ausgelöst bei der Installation des Software-Produkts. Die solide Hardware-Identifizierung (SHWID), die durch das Verfahren der vorliegenden Erfindung erzeugt wird, wird mit der Software-Produktidentifikation (PID) verknüpft und wird zusammen mit der Software-Produktidentifikation (PID) lokal auf den Computer 20 und/oder remote an einer zugänglichen Stelle, entweder im Local Area Network (LAN) 51 oder im Wide Area Network (WAN) 52, gespeichert, so wie bei einer externen Aktivierungsstelle.
  • Als Teil des Installationsprozesses ist es für den Verbraucher erforderlich, das Software-Produkt bei der externen Aktivierungsstelle zu aktivieren. Diese Stelle kann z.B. der Produkthersteller oder ein autorisierter Dritter sein. Der Aktivierungsprozess beabsichtigt, dass der Verbraucher gezwungen ist, sein Software-Produkt zu aktivieren (i) zum Installieren und Verwenden auf einen bestimmten Computer oder (ii) zum Installieren und Verwenden gemäß den Vereinbarungen eines Produktlizenzübereinkommens. Solch ein Aktivierungsprozess ist detailliert beschrieben in U.S. Patent Nr. 6,243,468, das der Microsoft Corporation (Redmond, WA) erteilt wurde, welches hierin durch Bezugnahme vollständig aufgenommen ist.
  • Die solide Hardware-Identifizierung (SHWID), die durch das Verfahren der vorliegenden Erfindung erzeugt wird, und die Software-Produktidentifizierung (PID) können auf einem Computer 20 lokal und/oder remote ein einer zugänglichen Stelle, entweder im Local Area Network (LAN) 51 oder Wide Area Network (WAN) 52 bei einer Aktivierungsstelle gespeichert werden. Wünschenswerterweise zeigt das Software-Produkt automatisch ein grafisches Benutzerschnittstelle-(UI)-Dialogfenster, wenn es das erste Mal gestartet wird, welches die Benutzer auffordert eine Verbindung mit dem Aktivierungsserver zu initiieren, um sich selbst zu aktivieren. Der Aktivierungsserver pflegt eine Datenbank zum Speichern empfangener solider Hardware-Identifizierungen (SHWIDs) und deren zugehöriger Software-Produktidentifizierungen (PIDs).
  • Die solide Hardware-Identifizierung (SHWID) und zugehörige Software-Produktidentifizierungen (PID) für ein gegebenes Software-Produkt kann für eine unbegrenzte Zeitspanne gespeichert werden, bis das Software-Produkt auf einem anderen Computer wieder installiert wird oder auf dem ersten Computer eingeführt wird (d.h., der Computer, der während der anfänglichen Installation verwendet wurde). Wenn das gleiche Software-Produkt auf einem anderen Computer installiert wird oder auf dem ersten Computer eingeführt wird, stößt Code auf dem Software-Produkt ein Verfahren an zum Ermitteln, ob ein Software-Produkt auf einem Computer-System gemäß der vorliegenden Erfindung verwendet werden kann. Das Software-Produkt ruft die vorher gespeicherte solide Hardware-Identifizierung (SHWID) zugehörig zu der Software-Produktidentifizierung (PID) des Software-Produkts entweder vom lokalen Computer 20 oder von einer Remote-Stelle über ein Local Area Network (LAN) 51 oder ein Wide Area Network (WAN) 52 ab. Es wird eine Ermittlung unter Verwendung der vorher gespei cherten soliden Hardware-Identifizierung (SHWID) durchgeführt, ob das Software-Produkt auf einer Computer-Hardware-Konfiguration wie oben beschrieben verwendet werden kann.
  • Wenn die Verwendung eines Software-Produkts aufgrund von signifikanten Veränderungen der Hardware-Konfiguration eines ersten Computers (d.h. der Computer, der während der anfänglichen Installation verwendet wurde) verweigert wird, kann eine Dialogbox dem Verbraucher gezeigt werden, die anzeigt, dass die Verwendung des Software-Produkts verweigert wurde, und dass weiterführende Informationen bezüglich der zukünftigen Verwendung des Software-Produkts von einer gegebenen Quelle bezogen werden können.
  • III. Andere Verwendungen einer soliden Hardware-Identifizierung (SHWID)
  • Zusätzlich zu den oben beschriebenen Verwendungen kann die solide Hardware-Identifizierung (SHWID) der vorliegenden Erfindung verwendet werden, um Daten zur ausschließlichen Verwendung auf einer speziellen Hardware-Konfiguration zu verschlüsseln/entschlüsseln.
  • Während die Beschreibung detailliert mit Bezug auf bestimmte Ausführungsformen erläutert wurde, wird es begrüßt, dass Fachleute, wenn sie das vorangegangene verstanden haben, sich leicht Abänderungen von, Variationen zu, und Entsprechungen von den Ausführungsformen ausdenken können. Entsprechend sollte der Schutzbereich der vorliegenden Erfindung als Umfang der beigefügten Ansprüche und aller Entsprechungen dazu bewertet werden.

Claims (41)

  1. Verfahren zum Erzeugen einer soliden Hardware-Identifizierung (SHWID) für ein erstes Computer-System, das eine erste Hardware-Konfiguration hat, dadurch gekennzeichnet, dass das Verfahren die folgenden Schritte umfasst: Identifizieren jeder Komponentenklasse in der ersten Hardware-Konfiguration, wobei die Anzahl der Komponentenklassen gleich n ist; Ermitteln eines Klassenprodukts, cp, für jede Komponentenklasse; Ermitteln eines Teilgeheimwertes, Pp, für jede Komponentenklasse; und Addieren des Klassenprodukts, cp, und des Teilgeheimwertes, Pp, für jede Komponentenklasse, um n solide Klassen-IDs zu bilden, wobei die Kombination der n soliden Klassen-IDs die solide Hardware-Identifizierung (SHWID) des ersten Computer-Systems bilden.
  2. Verfahren nach Anspruch 1, wobei n eine Ganzzahl bis zu 16 ist.
  3. Verfahren nach Anspruch 1, wobei das Klassenprodukt, cp, für jede Komponentenklasse durch die folgenden Schritte ermittelt wird: Auswählen der Anzahl der Komponentenklassen n; Identifizieren der n Komponentenklassen; Identifizieren aller Instanzen innerhalb jeder Komponentenklasse; Zuweisen einer Identifizierungszeichenkette für jede Komponenteninstanz; Erzeugen von Instanzprimzahlen, Pp,q, für jede Komponenteninstanz, wobei jede Instanzprimzahl eine positive Primzahl ist, und wobei p die Nummer einer gegebenen Komponentenklasse im Bereich von 1 bis n repräsentiert, und q den q-ten Komponententyp innerhalb der ersten Hardware-Konfiguration repräsentiert; und Multiplizieren der Instanzprimzahlen innerhalb jeder Komponentenklasse, um das Klassenprodukt, cp, für jede Komponentenklasse zu bilden.
  4. Verfahren nach Anspruch 3, wobei der Schritt des Erzeugens von Instanzprimzahlen das Eingeben der Identifizierungszeichenfolge für jede Komponenteninstanz in eine Primzahl generierende Funktion, f(x), umfasst, wobei x die Identifizierungszeichenfolge ist, die eine Länge von bis zu 65000 Zeichen hat.
  5. Verfahren nach Anspruch 4, wobei f(x) eine positive Primzahl erzeugt, die einen Wert größer als 2t hat, wobei t eine Ganzzahl im Bereich von 32 bis 2048 ist.
  6. Verfahren nach Anspruch 1, wobei das Teilgeheimnis, Pp, für jede Komponentenklasse durch die folgenden Schritte ermittelt wird: Erzeugen einer Zufallszahl, rp, für jede Komponentenklasse; Erzeugen von Klassenprimzahlen, pp, für jede Komponentenklasse, wobei jede Klassenprimzahl eine positive Primzahl ist; Auswählen einer Anzahl von erforderlichen Übereinstimmungen von Komponentenklassen, m, wobei m kleiner als oder gleich n ist; Ermitteln von N, wobei N gleich dem Produkt der m kleinsten Klassenprimzahlen pp ist; Ermitteln von M, wobei M gleich dem Produkt der (m-1) größten Klassenprimzahlen pp ist, und M kleiner als N ist; Selektieren einer Geheimzahl S, wobei M<S<N; Ermitteln von Klassenrestwerten, dp, für jede Komponentenklasse, wobei dp gleich [S(mod pp)] ist; Bilden eines ersten binären Wertes für jede Komponentenklasse, wobei der erste binäre Wert die Klassenprimzahl pp für jede Klasse kodiert in eine erste binäre Zahl ist, die bis zu u Bits hat, wobei u kleiner als t ist und u und t beide kleiner als 2048 sind; Bilden eines zweiten binären Wertes für jede Komponentenklasse, wobei der zweite binäre Wert die übrige Klassensumme dp für jede Klasse kodiert in eine zweite binäre Zahl ist, die bis zu v Bits hat, wobei v kleiner als t ist, und (u + v = t) ist; und Verketten des ersten binären Wertes und des zweiten binären Wertes, um der Teilgeheimwert, Pp, für jede Komponentenklasse zu bilden, das eine Gesamtanzahl von Bits gleich t hat.
  7. Verfahren nach Anspruch 6, wobei jede Zufallszahl rp, durch die Verwendung eines Zufallszahlengenerators erzeugt wird und einen Wert im Bereich von 0 bis weniger als 2u hat.
  8. Verfahren nach Anspruch 6, wobei der Schritt des Erzeugens von Klassenprimzahlen, pp, für jede Komponentenklasse das Eingeben einer Zufallszahl für jede Komponentenklasse in eine Primzahlen generierende Funktion, g(x), umfasst, wobei x die Zufallszahl ist, die eine Länge von bis zu 65.000 Zeichen hat.
  9. Verfahren nach Anspruch 8, wobei g(x) eine positive Primzahl erzeugt, die einen Wert im Bereich von größer als 2 bis kleiner als 2v hat.
  10. Verfahren nach Anspruch 1, wobei das Verfahren ausgelöst wird während eines Schritts zum Laden eines Software-Produkts auf das erste Computer-System.
  11. Verfahren zum Ermitteln, ob ein Software-Produkt auf einem zweiten Computer-System verwendet werden kann, das eine zweite Hardware-Konfiguration hat, wobei das zweite Computer-System identisch zu oder verschieden von dem ersten Computer-System ist, dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: Identifizieren der n Komponentenklassen, die verwendet: wurden, um die solide Hardware-Identifizierung (SHWID) zu ermitteln, welche durch das Verfahren nach Anspruch 1 erzeugt wurde; Identifizieren aller Instanzen innerhalb jeder Komponentenklasse der zweiten Hardware-Konfiguration; Abrufen einer Identifikations-Zeichenfolge, die jede individuelle Komponenteninstanz repräsentiert; Erzeugen von Instanzprimzahlen, ip,q, für jede Komponenteninstanz, wobei jede Instanzprimzahl eine positive Primzahl ist und wobei p die Nummer einer gegebenen Komponentenklasse im Bereich von 1 bis n reprääsentiert, und q den q-ten Komponententyp innerhalb der ersten Hardware-Konfiguration oder der zweiten Hardware-Konfiguration repräsentiert; Abrufen möglicher Klassen-Teilgeheimnisse, Pp,q, wobei: Pp,q = [Cp(mod ip,q)];Extrahieren möglicher Klassenprimzahlen, pp,q, und möglicher übriger Klassensummen, dp,q, von den möglichen Teilgeheimnissen einer Klasse, Pp,q; Lösen einer Reihe von Kongruenzen, die von einer Permutation der möglichen Klassenprimzahlen und der möglichen Klassenrestwerte bereitgestellt werden, um ein mögliches Geheimnis zu erzielen; und Testen des möglichen Geheimnisses durch Dekodieren eines gegebenen chiffrierten Textes und Testen eines Ergebnisses des Testens gegen einen zugehörigen bekannten Klartext; wobei: wenn der sich ergebende Klartext mit dem bekannten Klartext übereinstimmt, Laden des Software-Produkts auf das zweite Computer-System; und wenn der resultierende Klartext nicht mit dem bekannten Klartext übereinstimmt, verhindern, dass das Software-Produkt auf das zweite Computer-System geladen wird.
  12. Verfahren nach Anspruch 11, wobei der Schritt des Erzeugens von Instanzprimzahlen das Eingeben der Identifikationszeichenfolge, die jede individuelle Komponenteninstanz repräsentiert, in eine Primzahlen generierende Funktion, f(x), umfasst, wobei x die Identifikationszeichenfolge ist, die eine Länge von bis zu 65.000 Zeichen hat.
  13. Verfahren nach Anspruch 12, wobei f(x) eine positive Primzahl erzeugt, die einen Wert größer 2t hat, wobei t eine Ganzzahl im Bereich von 32 bis 2.048 ist.
  14. Computer-System, das wenigstens ein Anwendungsmodul beinhaltet, welches auf dem Computer-System verwendbar ist, wobei das wenigstens eine Anwendungsmodul Anwendungs-Code zum Ausführen des Verfahrens nach Anspruch 1 umfasst.
  15. Computer-lesbares Medium, auf welchem Computer-ausführbare Instruktionen gespeichert sind, um das Verfahren nach Anspruch 1 auszuführen.
  16. Computer-lesbares Medium, auf dem Computer-ausführbare Instruktionen gespeichert sind, um ein Verfahren zum Erzeugen einer soliden Hardware- Identifikation (SHWID) für ein erstes Computer-System, das eine erste Hardware-Konfiguration hat, auszuführen, dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: Identifizieren jeder Komponentenklasse innerhalb der ersten Hardware-Konfiguration, wobei die Anzahl der Komponentenklassen gleich n ist; Ermitteln eines Klassenprodukts, cp, für jede Komponentenklasse; Ermitteln eines Teilgeheimwertes, Pp, für jede Komponentenklasse; und Addieren des Klassenprodukts, cp, und des Teilgeheimwertes Pp, für jede Komponentenklasse, um n solide Klassen-IDs zu bilden, wobei die n soliden Klassen-IDs in Kombination die solide Hardware-Identifizierung (SHWID) von dem ersten Computer-System bilden.
  17. Computer-lesbares Medium nach Anspruch 16, wobei n eine Ganzzahl bis zu 16 ist.
  18. Computer-lesbares Medium nach Anspruch 16, wobei das Klassenprodukt, cp, für jede Komponentenklasse durch die folgenden Schritte ermittelt wird: Auswählen der Anzahl der Komponentenklassen n; Identifizieren der n Komponentenklassen; Identifizieren aller Instanzen innerhalb jeder Komponentenklasse; Zuweisen einer Identifikationszeichenfolge für jede Komponenteninstanz; Erzeugen von Instanzprimzahlen, Pp,q, für jede Komponenteninstanz, wobei jede Instanzprimzahl eine positive Primzahl ist, und wobei p die Nummer einer gege benen Komponentenklasse im Bereich von 1 bis n repräsentiert, und q den q-ten Komponententyp innerhalb der ersten Hardware-Konfiguration repräsentiert; und Multiplizieren der Instanzprimzahlen innerhalb jeder Komponentenklasse, um das Klassenprodukt, cp, für jede Komponentenklasse zu bilden.
  19. Computer-lesbares Medium nach Anspruch 18, wobei der Schritt des Erzeugens von Instanzprimzahlen das Eingeben der Identifizierungszeichenfolge für jede Komponenteninstanz in eine Primzahlen generierende Funktion, f(x), umfasst, wobei x die Identifikationszeichenfolge ist, die eine Länge von bis zu 65.000 Zeichen hat.
  20. Computer-lesbares Medium nach Anspruch 19, wobei f(x) eine positive Primzahl erzeugt, die einen Wert größer als 2t hat, wobei t eine Ganzzahl im Bereich von 32 bis 2.048 ist.
  21. Computer-lesbares Medium nach Anspruch 16, wobei der Teilgeheimwert, Pp, für jede Komponentenklasse durch die folgenden Schritte ermittelt wird: Erzeugen einer Zufallszahl, rp, für jede Komponentenklasse; Erzeugen einer Klassenprimzahl, pp, für jede Komponentenklasse, wobei jede Klassenprimzahl eine positive Primzahl ist; Auswählen einer Anzahl von benötigten Übereinstimmungen von Komponentenklassen, m, wobei m kleiner als oder gleich n ist; Ermitteln von N, wobei N gleich dem Produkt von den m kleinsten Klassenprimzahlen pp ist; Ermitteln von M, wobei M gleich dem Produkt von dem (m-1) größten Klassenprimzahlen pp ist, und M kleiner als N ist; Selektieren einer Geheimzahl S, wobei M<S<N ist; Ermitteln von Klassenrestwerten, dp, für jede Komponentenklasse, wobei dp gleich [S(mod pp)] ist; Bilden eines ersten binären Wertes für jede Komponentenklasse, wobei der erste binäre Wert die Klassenprimzahl pp für jede Klasse kodiert in eine erste binäre Zahl, die bis zu u Bits hat, ist, wobei u kleiner als t ist und u und t beide kleiner als 2.048 sind; Bilden eines zweiten binären Wertes für jede Komponentenklasse, wobei der zweite binäre Wert die übrige Klassensumme dp für jede Klasse kodiert in eine zweite binäre Zahl, die bis zu v Bits hat, ist, wobei v weniger als t ist, und (u + v = t) ist; und Verketten des ersten binären Wertes und des zweiten binären Wertes, um Teilgeheimnis Pp, für jede Komponentenklasse zu bilden, das eine Gesamtanzahl von Bits gleich t hat.
  22. Computer-lesbares Medium nach Anspruch 21, wobei jede Zufallszahl, rp, erzeugt wird durch Verwendung eines Zufallszahlengenerators, und einen Wert im Bereich von 0 bis weniger als 2u hat.
  23. Computer-lesbares Medium nach Anspruch 21, wobei der Schritt des Erzeugens von Klassenprimzahlen, pp, für jede Komponentenklasse das Eingeben der Zufallszahl für jede Komponentenklasse in eine Primzahlen erzeugende Funktion, g(x), umfasst, wobei x die Zufallszahl ist, die eine Länge von bis zu 65.000 Zeichen hat.
  24. Computer-lesbares Medium nach Anspruch 23, wobei g(x) eine positive Primzahl erzeugt, die einen Wert im Bereich von größer als 2 bis kleiner als 2v hat.
  25. Computer-lesbares Medium nach Anspruch 16, wobei das Verfahren ausgelöst wird während eines Schritts zum Laden eines Software-Produkts auf das erste Computer-System.
  26. Computer-lesbares Medium, auf dem Computer-ausführbare Instruktionen gespeichert sind, um ein Verfahren durchzuführen zur Ermittelung, ob ein Software-Produkt auf einem zweiten Computer-System, das eine zweite Hardware-Konfiguration hat, verwendet werden kann, wobei das zweite Computer-System identisch zu oder verschieden von dem ersten Computer-System ist, dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: Identifizieren der n Komponentenklassen, die verwendet werden, um die solide Hardware-Identifikation (SHWID) zu ermitteln, welche durch das Verfahren nach Anspruch 16 erzeugt wurde; Identifizieren aller Instanzen innerhalb jeder Komponentenklasse der zweiten Hardware-Konfiguration; Abrufen einer Identifikationszeichenfolge, die jede individuelle Komponenteninstanz repräsentiert; Erzeugen von Instanzprimzahlen, ip,q, für jede Komponenteninstanz, wobei jede Instanzprimzahl eine positive Primzahl ist, und wobei p eine gegebene Komponentenklassen-Nummer im Bereich von 1 bis n repräsentiert, und q den q-ten Typ einer Komponente innerhalb der ersten Hardware-Konfiguration oder der zweiten Hardware-Konfiguration repräsentiert; Abrufen möglicher Klassen Teilgeheimnisse, Pp,q, wobei: Pp,q = [Cp(mod ip,q)];Extrahieren möglicher Klassenprimzahlen, pp,q, und möglicher übriger Klassensummen, dp,q, von den möglichen Klassen Teilgeheimnissen, Pp,q; Lösen der Reihe von Kongruenzen, welche durch eine Permutation von möglichen Klassenprimzahlen und möglichen Klassenrestwerten bereitgestellt wurde, um ein mögliches Geheimnis zu produzieren; und Testen des möglichen Geheimnisses durch Dekodieren eines gegebenen chiffrierten Textes und Testen des Ergebnisses gegen den entsprechenden bekannten Klartext; wobei: wenn der resultierende Klartext dem bekannten Klartext entspricht, Laden des Software-Produkts auf das zweite Computer-System; und wenn der resultierende Klartext dem bekannten Klartext nicht entspricht, Verhindern, dass das Software-Produkt auf das zweite Computer-System geladen wird.
  27. Computer-lesbares Medium nach Anspruch 26, wobei der Schritt des Erzeugens von Instanzprimzahlen das Eingeben der Identifikationszeichenfolge, die jede einzelne Komponenteninstanz repräsentiert, in eine Primzahlen generierende Funktion, f(x), umfasst, wobei x die Identifikationszeichenfolge ist, die eine Länge von bis zu 65.000 Zeichen hat.
  28. Computer-lesbares Medium nach Anspruch 27, wobei f(x) eine positive Primzahl erzeugt, die einen Wert größer als 2t hat, wobei t eine Ganzzahl im Bereich von 32 bis 2.048 ist.
  29. Computer-System, das wenigstens ein Applikationsmodul verwendbar auf dem Computer-System beinhaltet, wobei das wenigstens eine Applikationsmodul Applikations-Code umfasst, um ein Verfahren zum Erzeugen einer soliden Hardware-Identifikation (SHWID) für ein erstes Computer-System durchführt, welches eine erste Hardware-Konfiguration hat, dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: Identifizieren jeder Komponentenklasse innerhalb der ersten Hardware-Konfiguration, wobei die Anzahl der Komponentenklassen gleich n ist; Ermitteln eines Klassenprodukts, cp für jede Komponentenklasse; Ermitteln eines Teilgeheimwertes, Pp, für jede Komponentenklasse; und Addieren des Klassenprodukts cp, und des Teilgeheimwertes Pp, für jede Komponentenklasse, um n solide Klassen-IDs zu bilden, wobei die n soliden Klassen-IDs in Kombination die solide Hardware-Identifikation (SHWID) des ersten Computer-Systems bilden.
  30. Computer-System nach Anspruch 29, wobei n eine Ganzzahl bis zu 16 ist.
  31. Computer-System nach Anspruch 29, wobei das Klassenprodukt cp, für jede Komponentenklasse durch die folgenden Schritte ermittelt wird: Auswählen der Anzahl von Komponentenklassen n; Identifizieren der n Komponentenklassen; Identifizieren aller Instanzen innerhalb jeder Komponentenklasse; Zuweisen einer Identifikationszeichenfolge für jede Komponenteninstanz; Erzeugen von Instanzprimzahlen, pp,q, für jede Komponenteninstanz, wobei jede Instanzprimzahl eine positive Primzahl ist, und wobei p eine gegebene Komponentenklassen-Nummer im Bereich von 1 bis n repräsentiert, und q den q-ten Typ einer Komponente innerhalb der ersten Hardware-Konfiguration repräsentiert; und Multiplizieren der Instanzprimzahlen innerhalb jeder Komponentenklasse, um das Klassenprodukt cp, für jede Komponentenklasse zu bilden.
  32. Computer-System nach Anspruch 31, wobei der Schritt des Erzeugens von Instanzprimzahlen das Eingeben einer Identifikationszeichenfolge für jede Kompo nenteninstanz in eine Primzahlen generierende Funktion, f(x), umfasst, wobei x die Identifikationszeichenfolge ist, die eine Länge von bis zu 65.000 Zeichen hat.
  33. Computer-System nach Anspruch 32, wobei f(x) eine positive Primzahl erzeugt, die einen Wert größer als 2t hat, wobei t eine Ganzzahl im Bereich von 32 bis 2.048 ist.
  34. Computer-System nach Anspruch 29, wobei der Teilgeheimwert, Pp, für jede Komponentenklasse durch die folgenden Schritte ermittelt wird: Erzeugen einer Zufallszahl, rp, für jede Komponentenklasse; Erzeugen von Klassenprimzahlen, pp, für jede Komponentenklasse, wobei jede Klassenprimzahl eine positive Primzahl ist; Auswählen einer Anzahl von benötigten Übereinstimmungen von Komponentenklassen, m, wobei m kleiner als oder gleich n ist; Ermitteln von N, wobei N gleich dem Produkt von den m kleinsten Klassenprimzahlen pp ist; Ermitteln von M, wobei M gleich dem Produkt von den (m-1) größten Klassenprimzahlen pp ist, und M kleiner als N ist; Selektieren einer Geheimzahl S, wobei M<S<N ist; Ermitteln von Klassenrestwerten, dp, für jede Komponentenklasse, wobei dp gleich [S(mod pp)] ist; Bilden eines ersten binären Wertes für jede Komponentenklasse, wobei der erste binäre Wert die Klassenprimzahl pp für jede Klasse kodiert in eine erste binäre Zahl ist, die bis zu u Bits hat, wobei u kleiner als t und u und t beide kleiner als 2.048 sind; Bilden eines zweiten binären Wertes für jede Komponentenklasse, wobei der zweite binäre Wert die übrige Klassensumme dp für jede Klasse kodiert in eine zweite binäre Zahl ist, die bis zu v Bits hat, wobei v kleiner als t und (u + v = t) ist; und Verketten des ersten binären Wertes und des zweiten binären Wertes, um Teilgeheimnis Pp, für jede Komponentenklasse zu bilden, das eine Gesamtanzahl von Bits gleich t hat.
  35. Computer-System nach Anspruch 34, wobei jede Zufallszahl, rp, erzeugt wird durch Verwenden eines Zufallszahlengenerators, und einen Wert im Bereich von 0 bis weniger als 2u hat.
  36. Computer-System nach Anspruch 34, wobei der Schritt des Erzeugens von Klassenprimzahlen, pp, für jede Komponentenklasse das Eingeben der Zufallszahl für jede Komponentenklasse in eine Primzahlen generierende Funktion, g(x), umfasst, wobei x eine Zufallszahl ist, die eine Länge von bis zu 65.000 Zeichen hat.
  37. Computer-System nach Anspruch 36, wobei g(x) eine positive Primzahl erzeugt, die einen Wert im Bereich von größer als 2 bis weniger als 2v hat.
  38. Computer-System nach Anspruch 29, wobei das Verfahren ausgelöst wird während eines Schritts des Ladens eines Software-Produkts auf das zweite Computer-System.
  39. Computer-System, das wenigstens ein Applikationsmodul verwendbar auf dem Computer-System beinhaltet, wobei das wenigstens eine Applikationsmodul Applikations-Code zum Durchführen eines Verfahrens zum Ermitteln, ob ein Software-Produkt auf einem zweiten Computer-System verwendet werden kann, das eine zweite Hardware-Konfiguration hat, umfasst, wobei das zweite Computer-System identisch zu oder verschieden von dem ersten Computer-System ist, dadurch gekennzeichnet, dass das Verfahren die folgenden Schritte umfasst: Identifizieren der n Komponentenklassen, die verwendet werden, um die solide Hardware-Identifikation (SHWID), welche durch das Verfahren nach Anspruch 29 erzeugt wird, zu ermitteln; Identifizieren aller Instanzen innerhalb jeder Komponentenklasse der zweiten Hardware-Konfiguration; Abrufen einer Identifikations-Zeichenfolge, die jede einzelne Komponenteninstanz repräsentiert; Erzeugen von Instanzprimzahlen, ip,q, für jede Komponenteninstanz, wobei jede Instanzprimzahl eine positive Primzahl ist, und wobei p eine gegebene Komponentenklassen-Nummer im Bereich von 1 bis n repräsentiert, und q den q-ten Typ einer Komponente innerhalb der ersten Hardware-Konfiguration oder der zweiten Hardware-Konfiguration repräsentiert; Abrufen möglicher Klassenteilgeheimnisse, Pp,q, wobei: Pp,q = [Cp(mod ip,q)];Extrahieren möglicher Klassenprimzahlen, pp,q, und möglicher übriger Klassensummen, dp,q, von den möglichen Klassenteilgeheimnissen, Pp,q; Lösen der Reihe von Kongruenzen, die durch eine Permutation von möglichen Klassenprimzahlen und möglichen Klassenrestwerten bereitgestellt wurde, um ein mögliches Geheimnis zu produzieren; und Testen des möglichen Geheimnisses durch decodieren eines gegebenen chiffrierten Textes und Testen des Ergebnisses gegen den entsprechenden bekannten Klartext; wobei: wenn der resultierende Klartext mit dem gegebenen Klartext übereinstimmt, Laden des Software-Produkts auf das zweite Computer-System; und wenn der resultierende Klartext nicht mit dem bekannten Klartext übereinstimmt, Verhindern, dass das Software-Produkt auf das zweite Computer-System geladen wird.
  40. Computer-System nach Anspruch 39, wobei der Schritt des Erzeugens von Instanzprimzahlen das Eingeben der Identifikationszeichenfolge, die jede einzelne Komponenteninstanz repräsentiert, in eine Primzahlen generierende Funktion, f(x), umfasst, wobei x die Identifikationszeichenfolge ist, die eine Länge von bis zu 65.000 Zeichen hat.
  41. Computer-System nach Anspruch 40, wobei f(x) eine positive Primzahl erzeugt, die einen Wert größer als 2t hat, wobei t eine Ganzzahl im Bereich von 32 bis 2.048 ist.
DE602004000106T 2003-03-03 2004-03-02 System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen Active DE602004000106T8 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US378224 2003-03-03
US10/378,224 US7296294B2 (en) 2003-03-03 2003-03-03 System for binding secrets to a computer system having tolerance for hardware changes

Publications (3)

Publication Number Publication Date
DE602004000106D1 DE602004000106D1 (de) 2006-02-16
DE602004000106T2 true DE602004000106T2 (de) 2006-03-23
DE602004000106T8 DE602004000106T8 (de) 2006-06-08

Family

ID=32824752

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004000106T Active DE602004000106T8 (de) 2003-03-03 2004-03-02 System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen

Country Status (19)

Country Link
US (2) US7296294B2 (de)
EP (1) EP1455257B1 (de)
JP (1) JP4599069B2 (de)
KR (1) KR101036701B1 (de)
CN (1) CN100416445C (de)
AT (1) ATE306101T1 (de)
AU (1) AU2004200683B2 (de)
BR (1) BRPI0400380A (de)
CA (1) CA2459217A1 (de)
DE (1) DE602004000106T8 (de)
DK (1) DK1455257T3 (de)
ES (1) ES2250932T3 (de)
HK (1) HK1068697A1 (de)
MX (1) MXPA04002024A (de)
MY (1) MY134635A (de)
PL (1) PL1455257T3 (de)
RU (1) RU2348968C2 (de)
TW (1) TWI319544B (de)
ZA (1) ZA200401493B (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050027657A1 (en) * 2003-08-01 2005-02-03 Yuri Leontiev Distinguishing legitimate hardware upgrades from unauthorized installations of software on additional computers
JP4699099B2 (ja) * 2005-06-14 2011-06-08 富士通株式会社 通信制御装置および通信制御方法
FR2912529A1 (fr) * 2007-02-13 2008-08-15 France Telecom Couplage d'un programme informatique ou de donnees a un systeme de reference et verification associee.
US8620818B2 (en) * 2007-06-25 2013-12-31 Microsoft Corporation Activation system architecture
US20090119744A1 (en) * 2007-11-01 2009-05-07 Microsoft Corporation Device component roll back protection scheme
US9047458B2 (en) 2009-06-19 2015-06-02 Deviceauthority, Inc. Network access protection
US9047450B2 (en) * 2009-06-19 2015-06-02 Deviceauthority, Inc. Identification of embedded system devices
US20100332319A1 (en) * 2009-06-24 2010-12-30 Craig Stephen Etchegoyen Methods and Systems for Dynamic Serving of Advertisements in a Game or Virtual Reality Environment
US9495190B2 (en) * 2009-08-24 2016-11-15 Microsoft Technology Licensing, Llc Entropy pools for virtual machines
US8726407B2 (en) * 2009-10-16 2014-05-13 Deviceauthority, Inc. Authentication of computing and communications hardware
CN103797490B (zh) * 2011-03-15 2017-04-26 爱迪德技术有限公司 在使用秘密共享方案的计算环境中生成用于资产集合的标识符的容忍变化方法
CN103814355B (zh) * 2011-03-15 2017-11-28 爱迪德技术有限公司 使用误差‑校正编码方案在计算环境中生成用于资产集合的标识符的容忍变化方法
AU2011101295B4 (en) 2011-06-13 2012-08-02 Device Authority Ltd Hardware identity in multi-factor authentication layer
AU2011101297B4 (en) 2011-08-15 2012-06-14 Uniloc Usa, Inc. Remote recognition of an association between remote devices
US9143496B2 (en) 2013-03-13 2015-09-22 Uniloc Luxembourg S.A. Device authentication using device environment information
US9286466B2 (en) 2013-03-15 2016-03-15 Uniloc Luxembourg S.A. Registration and authentication of computing devices using a digital skeleton key
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
CN114761940A (zh) * 2019-08-28 2022-07-15 斯巴达系统公司 用于生成电子数据记录的审计跟踪的方法、设备和计算机可读介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796220A (en) * 1986-12-15 1989-01-03 Pride Software Development Corp. Method of controlling the copying of software
US5113518A (en) 1988-06-03 1992-05-12 Durst Jr Robert T Method and system for preventing unauthorized use of software
US5182770A (en) 1991-04-19 1993-01-26 Geza Medveczky System and apparatus for protecting computer software
US5870543A (en) * 1995-06-07 1999-02-09 Digital River, Inc. System for preventing unauthorized copying of active software
US5826011A (en) * 1995-12-26 1998-10-20 Rainbow Technologies, Inc. Method of metering and protecting computer software
US5790783A (en) 1996-03-28 1998-08-04 Advanced Micro Devices, Inc. Method and apparatus for upgrading the software lock of microprocessor
EP0881557B1 (de) * 1997-05-28 2003-04-16 Siemens Aktiengesellschaft Computersystem und Verfahren zum Schutz von Software
US6134659A (en) * 1998-01-07 2000-10-17 Sprong; Katherine A. Controlled usage software
US7503072B2 (en) 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US20040107368A1 (en) * 1998-06-04 2004-06-03 Z4 Technologies, Inc. Method for digital rights management including self activating/self authentication software
CA2310032A1 (en) 2000-06-09 2001-12-09 Andre J. Brisson Big soft brother
JP3840399B2 (ja) 2000-12-05 2006-11-01 健太 堀 ソフトウエアの不正利用防止方法及びプログラム並びに記憶媒体

Also Published As

Publication number Publication date
JP4599069B2 (ja) 2010-12-15
US20080098482A1 (en) 2008-04-24
MXPA04002024A (es) 2005-02-17
EP1455257A1 (de) 2004-09-08
DE602004000106T8 (de) 2006-06-08
CN100416445C (zh) 2008-09-03
KR20040078593A (ko) 2004-09-10
BRPI0400380A (pt) 2005-01-04
ATE306101T1 (de) 2005-10-15
US7296294B2 (en) 2007-11-13
EP1455257B1 (de) 2005-10-05
TW200422945A (en) 2004-11-01
TWI319544B (en) 2010-01-11
JP2004266841A (ja) 2004-09-24
US20040177255A1 (en) 2004-09-09
US7647640B2 (en) 2010-01-12
ZA200401493B (en) 2005-04-19
CA2459217A1 (en) 2004-09-03
DE602004000106D1 (de) 2006-02-16
RU2004106183A (ru) 2005-08-10
HK1068697A1 (en) 2005-04-29
RU2348968C2 (ru) 2009-03-10
CN1542583A (zh) 2004-11-03
AU2004200683B2 (en) 2009-08-13
AU2004200683A1 (en) 2004-09-23
MY134635A (en) 2007-12-31
ES2250932T3 (es) 2006-04-16
KR101036701B1 (ko) 2011-05-24
PL1455257T3 (pl) 2006-03-31
DK1455257T3 (da) 2006-02-06

Similar Documents

Publication Publication Date Title
DE602004000106T2 (de) System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen
DE602004010563T2 (de) Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem
DE112005001654B4 (de) Verfahren zum Übermitteln von Direct-Proof-Privatschlüsseln an Geräte mittels einer Verteilungs-CD
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE60113844T2 (de) Verfahren zur feststellung böswilligen rechnerkodes
DE69815970T2 (de) Schlüsselbasiertes Schutzverfahren für optisch lesbare Platten
DE69724235T2 (de) Computersystem und Verfahren zum Schutz von Software
DE69837625T2 (de) Vorrichtung zur Entschlüsselung eines Schlüssels
DE60219706T2 (de) Verfahren und Vorrichtung zum Anfügen einer elektronischen Unterschrift an ein strukturiertes Dokument
EP3413254A1 (de) Verfahren und vorrichtung zum bereitstellen eines transaktionsdatensatzes
DE60221861T2 (de) Server mit dateiverifikation
DE60100363T2 (de) Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen
DE60300660T2 (de) Verfahren und System für mobile Endgeräte zum Vergeben und Verwalten von mit einem gekauften Inhalt verbundenen Nutzungsrechten
EP3963490B1 (de) Verfahren und vorrichtung zum übertragen eines boot-codes mit verbesserter datensicherheit
DE202022101844U1 (de) Ein System zur Ver- und Entschlüsselung von Daten für gesicherte Kommunikation
DE69907236T2 (de) Verfahren zur herstellung einer unlösbaren verknüpfung zwischen einem elektronischen dokument und ole objekten
DE102019003673B3 (de) Seitenkanalsichere Implementierung
DE69935980T2 (de) Eine Technik zur Erstellung Privat authentifizierbarer kryptografischer Unterschriften und zur Verwendung einer solchen Unterschrift in Verbindung mit der Kopie eines Produktes
DE112020005818B4 (de) Authentifikatorverwaltungsvorrichtung, authentifikatorverwaltungsprogramm und authentifikatorverwaltungsverfahren
EP2187282A1 (de) Verfahren zum Betreiben einer Anlage unter Verwendung von gegen unberechtigte Verwendung gesicherten Daten
EP4325387A1 (de) Verfahren zum bereitstellen eines digitalen schlüssels
DE102004058882A1 (de) Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
DE102023116901A1 (de) Zertifikatlose Authentifizierung von ausführbaren Programmen
DE102017214591A1 (de) Verfahren und Vorrichtung zum Schützen eines Gerätes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition