DE69720972T2 - Computersystem und Verfahren zum Schutz von Software - Google Patents

Computersystem und Verfahren zum Schutz von Software Download PDF

Info

Publication number
DE69720972T2
DE69720972T2 DE69720972T DE69720972T DE69720972T2 DE 69720972 T2 DE69720972 T2 DE 69720972T2 DE 69720972 T DE69720972 T DE 69720972T DE 69720972 T DE69720972 T DE 69720972T DE 69720972 T2 DE69720972 T2 DE 69720972T2
Authority
DE
Germany
Prior art keywords
query
computer system
key material
response
random
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
DE69720972T
Other languages
English (en)
Other versions
DE69720972D1 (de
Inventor
Dr. Glenn Benson
Dr. Markus Dichtl
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of DE69720972D1 publication Critical patent/DE69720972D1/de
Application granted granted Critical
Publication of DE69720972T2 publication Critical patent/DE69720972T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/605Copy protection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)

Description

  • Allgemeiner Stand der Technik
  • Die vorliegende Erfindung betrifft Mechanismen zum Schutz von Software vor unautorisierter Benutzung und insbesondere unautorisiertem Kopieren.
  • Die Business Software Alliance schätzt, daß die finanziellen Verluste, die auf das unerlaubte Kopieren von Software zurückzuführen sind, für 1995 8,1 Milliarden US Dollar für Geschäftsanwendungssoftware und 15,2 Milliarden US Dollar für alle Software betragen.
  • Lösungen wurden in zwei Bereichen vorgeschlagen:
    • – verbesserte Legislatur für den Schutz von geistigem Eigentum (IPR) und
    • – verbesserte elektronische Kopierschutzmechanismen (ECP-Mechanismen).
  • Die IPR-Legislatur und -Durchsetzung verbessert sich in vielen Ländern, es bestehen aber weiterhin signifikante Schwierigkeiten in anderen Teilen der Welt. Als Folge stufen bestimmte Vertreiber zur Zeit ECP neu ein.
  • Bestimmte beispielhafte Anforderungen, die ein ECP-Mechanismus potentiell erfüllen muß, sind im folgenden aufgelistet:
    • – Es sollte verhindert werden, daß unautorisierte Kunden geschützte Software ausführen.
    • – Der Kunde sollte weiterhin Sicherungskopien anfertigen dürfen.
    • – Der ECP-Mechanismus sollte sich nur minimal auf die Benutzeroberfläche auswirken. Der visuelle Effekt sollte auf das erste anfängliche Einloggen in das Betriebssystem und/oder die Chipkarte begrenzt sein.
    • – Es sollten nur Standard-Hardware- und -Software-Annahmen getroffen werden. Obwohl Hardware- Dongles Kopierschutzdienste bereitstellen, möchten viele Vertreiber zum Beispiel den Verkauf der Software nicht auf die Gruppe von Kunden beschränken, die ein Dongle besitzen oder ein solches zu installieren bereit sind.
    • – Der ECP-Mechanismus sollte die Ausführung der geschützten Software nicht auf eine beschränkte Gruppe von Maschinen beschränken. Wenn ein Kunde rechtmäßig Software erwirbt, sollte der Kunde in der Lage sein, die Software ungeachtet der Eigentümerschaft auf jeder beliebigen Maschine auszuführen. Wahlweise sollte der Kunde in der Lage sein, die gleichzeitige Ausführung der Software in mehreren Maschinen zu autorisieren.
    • – Der ECP-Mechanismus sollte keine erforderlichen Netzwerkabhängigkeiten aufweisen, um ein bereits erworbenes geschütztes Programm auszuführen.
    • – Dem Vertreiber sollte es gestattet sein, an alle Kunden eine identische Version der geschützten Software zu vertreiben. Durch diese Anforderung kann die geschützte Software durch normale Kanäle verteilt werden, wie zum Beispiel durch CD-ROMs, Disketten oder Netzwerk-Bulletin-Boards.
    • – Es sollte für einen potentiellen unrechtmäßigen Softwarekopierer extrem schwierig und/oder rechnerisch impraktikabel sein, den ECP-Mechanismus zu umgehen, ohne das geschützte Programm zu modifizieren. Diese Anforderung dient als eine Virusschutzmaßnahme, da eine von dem Vertreiber gelieferte digitale Signatur nicht validiert werden würde, wenn ein unrechtmäßiger Kopierer eine modifizierte Version des ursprünglichen Programms verteilt.
    • – Der ECP-Mechanismus sollte dem Vertreiber, jedem von dem Vertreiber erstellten Programm oder einem etwaigen potentiellen Trojanisches-Pferd-Programm nicht das private Schlüsselmaterial enthüllen. Obwohl die Hauptfunktionalität darin besteht, den Softwarevertreiber zu schützen, darf dies nicht auf Kosten des Kunden geschehen.
    • – Der ECP-Mechanismus sollte sowohl in einer Nur-Software-Version als auch in einer hardwareunterstützten Version, die zum Beispiel eine Chipkarte zur Sicherstellung einer weiten Marktannahme verwendet, verfügbar sein.
  • In [1] wird ein Mechanismus vorgeschlagen, bei dem ein geschütztes Dokument nur über ein speziell konfiguriertes Viewer-Programm betrachtet werden kann, das einem Kunden nur dann erlaubt, das Dokument zu betrachten, wenn der Kunde dem Viewer das private Schlüsselmaterial des Kunden liefert. Dadurch wird der Kunde davon abgehalten, unautorisierte Kopien des Viewer-Programms zu verteilen, denn dazu müßte der Kunde anderen sein eigenes privates Schlüsselmaterial enthüllen. Da dieser Mechanismus erfordert, daß das Viewer-Programm auf das private Schlüsselmaterial zugreift, wird jedoch eine der obenbeschriebenen Anforderungen verletzt. Außerdem kann dieser Mechanismus nicht in Verbindung mit einer Chipkarte verwendet werden, die so konfiguriert ist, daß eine Freigabe von privatem Schlüsselmaterial vermieden wird.
  • Die internationale Patentanmeldung WO 88 05941 lehrt ein Softwareregulierungssystem zur Regulierung der Verwendung eines Softwareprogramms in einem digitalen Host-Datenverarbeitungssystem. Das Softwareregulierungssystem enthält eine oder mehrere von dem Softwareprogramm verarbeitete Checkpoint-Routinen und eine Software-Regulierungseinrichtung, die Teil des Computersystems oder extern mit diesem verbunden sein kann. Die Checkpoint-Routinen erzeugen Zufalls-Checkpoint-Nachrichten, die chiffriert und zu der Software-Regulierungseinrichtung übertragen werden. Die Software-Regulierungseinrichtung dechiffriert die Checkpoint-Nachricht, führt eine Verarbeitungsoperation durch, um eine Antwortnachricht zu erzeugen, chiffriert die Antwort und sendet die chiffrierte Antwort zu der Checkpoint-Routine. Die Checkpoint-Routine bestimmt dann, ob die chiffrierte Antwort korrekt ist und erlaubt dem Softwareprogramm entweder, weiterzulaufen oder beendet es.
  • Eine Übersicht über die asymmetrische Kryptographie zum Beispiel bezüglich des RSA-Verfahrens, und die probabilistische Verschlüsselung, wie zum Beispiel das probabilistische Blum-Goldwasser-Verschlüsselungsschema mit öffentlichen Schlüsseln, findet sich in [2].
  • Der Chiquadrattest, der Kolmogorov-Smirnov-Test und der Seriell-Korrelations-Test werden in [3] beschrieben.
  • Eine Übersicht über digitale Signaturverfahren (z. B. Rivest-Shamir-Adleman (RSA) usw.) findet sich in [2].
  • In [4] wird die kryptographische Zufälligkeit aus Luftturbulenz in Plattenlaufwerken beschrieben.
  • Ein Beispiel für eine Nachrichten-Digest-Funktion (die auch als einseitige Hash-Funktion bekannt ist) findet sich in MD5 [5]. Es ist rechnerisch impraktikabel oder sehr schwierig, die Umkehrung eines Nachrichten-Digest zu berechnen.
  • Die Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines verbesserten ECP-Mechanismus, der die meisten der obenbeschriebenen Beispielanforderungen oder sogar alle erfüllen kann.
  • Kurze Darstellung der Erfindung
  • Die vorliegende Erfindung benutzt ein asymmetrisches Vertraulichkeitsprotokoll. Bei einem asymmetrischen Vertraulichkeitsprotokoll treten zwei Teilnehmer A und B auf. A besitzt privates Schlüsselmaterial und B hat keinen Zugang zu dem privaten Schlüsselmaterial von A, ohne selbst das private Schlüsselmaterial zu enthüllen. Zu Anfang haben A und B kein gemeinsames Geheimnis. Im Verlauf des Verfahrens wird A und B ein gemeinsames Geheimnis bekannt. A beweist B, daß A Zugang zu dem privaten Schlüsselmaterial hat.
  • Ein asymmetrischer Vertraulichkeitsbeweis ist zum Beispiel die Verschlüsselung mit öffentlichen Schlüsseln. Wie in dem nachfolgenden asymmetrischen Vertraulichkeitsprotokoll dargestellt, beweist A B, daß A Zugang zu dem privaten Schlüsselmaterial hat.
    A ← B: h(r),B,PA(r,B)
    A → B: r
  • Das obenbeschriebene Protokollschema verwendet die folgende Notation:
    – A → B bedeutet, daß A eine Nachricht zu B sendet; und B → A bedeutet, daß B eine Nachricht zu A sendet.
    – r bedeutet eine Zufallszahl, die als Nonce verwendet wird
    – h(r) ist ein Nachrichten-Digest des Nonce
    – PA(r,B) ist die Verschlüsselung des Nonce und der Identität von B unter Verwendung des öffentlichen Schlüsselmaterials von A.
  • Hierbei erzeugt B ein Nonce und verschlüsselt das Nonce (zusammen mit der Identität von B) unter Verwendung des öffentlichen Schlüsselmaterials von A, d. h. PA(r,B).
  • Zusätzlich berechnet B das Nachrichten-Digest des Nonce, h(r).
  • B sendet die oberbeschriebenen Informationen zusammen mit einem Wert, der die Identität von B darstellt, zu A.
  • Als nächstes verwendet A sein privates Schlüsselmaterial zur Entschlüsselung von PA(r,B) und erhält r, B. A berechnet das Nachrichten-Digest des entschlüsselten Zufallswertes r und vergleicht das Ergebnis mit dem von B erhaltenen h(r).
  • An diesem Punkt ist die Zufallszahl ein sowohl A als auch B bekanntes gemeinsames Geheimnis.
  • Um das Protokoll zu beenden, gibt A die Zufallszahl an B zurück, um zu beweisen, daß A das Geheimnis kennt. Sobald A die Enthüllung liefert, ist die Vertraulichkeit der Zufallszahl natürlich verloren. B validiert den Beweis von A, indem das von A zurückgegebene Geheimnis auf Gleichheit mit dem ursprünglich von B erzeugten geprüft wird.
  • Ein zweites Beispiel für ein asymmetrisches Vertraulichkeitsprotokoll ist ein probabilistisches Verschlüsselungsschema, wie zum Beispiel das. probabilistische Blum-Goldwasser-Verschlüsselungsverfahren mit öffentlichen Schlüsseln. Hierbei verwendet der Verschlüsselungs- oder Entschlüsselungsmechanismus Zufallszahlen oder andere probabilistische Mittel.
  • Bei allen asymmetrischen Vertraulichkeitsprotokollen kann jeder Kunde sein öffentliches Schlüsselmaterial in ein Verzeichnis mit öffentlichem Zugang aufgeben, ohne das entsprechende private Schlüsselmaterial zu kompromittieren. Der Kunde solle gewöhnlich sein privates Schlüsselmaterial als ein enges Geheimnis schützen; andernfalls kann das kryptographische System die Korrektheit (Vertraulichkeit) nicht garantieren. Der beste bekannte Mechanismus zum Schutz eines persönlichen privaten Schlüsselmaterials ist durch die Verwendung einer Chipkarte. In diesem Fall ist die Chipkarte eine Einrichtung ohne Schnittstelle zum Freigeben von privatem Schlüsselmaterial (in einer nicht kryptographisch geschützten Form).
  • Obwohl Chipkarten den besten Schutz liefern, können soziale Faktoren des elektronischen Handels eine Rolle bei der Sicherstellung des Schutzes von privatem Schlüsselmaterial spielen. Eine der signifikanten Schwierigkeiten bei asymmetrischen Verschlüsselungsdiensten ist die Authentifizierung. Wenn zum Beispiel A sein öffentliches Schlüsselmaterial in ein öffentliches Verzeichnis aufgibt, stellt sich die Frage, wie B die Gültigkeit bewertet? Das heißt, ein unrechtmäßiger Kopierer kann versuchen, sich als A auszugeben, aber sein eigenes Schlüsselmaterial aufgeben. Bestimmte kommerzielle Organisationen lösen dieses Problem, indem sie als Zerfifizierungsbehörden (CA) handeln. Für eine (mögliche) Gebühr vermittelt die CA Identifizierungsmaterial von potentiellen Kunden, wie zum Beispiel einen Führerschein oder Paß eines Autofahrers. Nach der Validierung. des Identifizierungsmaterials gibt die CA das öffentliche Schlüsselmaterial in ein öffentliches Verzeichnis auf und die CA unterzeichnet ein Zertifikat (unter Verwendung einer digitalen Signatur mit dem privaten Schlüssel der CA); das das öffentlichen Schlüsselmaterial des Kunden hält. Standartisierte Dienste, wie zum Beispiel X.500, können angepaßt werden, um die Verwendung von Verzeichnissen, die öffentliches Schlüsselmaterial enthalten, zu erleichtern.
  • Nachdem ein Kunde sein öffentliches Schlüsselmaterial auf die CA aufgegeben hat, wird sich der Kunde wahrscheinlich sehr anstrengen, sein privates Schlüsselmaterial zu schützen. Wenn das private Schlüsselmaterial des Kunden unwissentlich kompromitiert werden würde, dann hätte bei bestimmten asymmetrischen Schlüsseln der Kunde Grund für starke . Besorgnis. Zum Beispiel könnten im Fall von RSA-Schlüsseln, die auch für digitale Signaturen verwendet werden können, vernetzte Vertreiber potentiell elektronische Handelstransaktionen autorisieren.
  • Die Erfindung wird durch die Merkmale der beigefügten unabhängigen Ansprüche 1,20 und 21 definiert. Weitere Aspekte der Erfindung werden durch die Merkmale der abhängigen Ansprüche 2 bis 19 und 22 bis 38 definiert.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Flußdiagramm eines Kaufprotokolles, das verwendet wird, wenn ein Kunde Software kaufen möchte, die durch einen erfindungsgemäßen Schutzmechanismus geschützt ist.
  • 2 ist ein Blockschaltbild der Softwarekomponenten, die in der Maschine des Kunden installiert werden müssen, damit der Kunde die geschützte Software ausführen kann.
  • 3 ist ein Flußdiagramm der Funktionsweise des Schutzmechanismus in der geschützten Software.
  • 4 ist ein Flußdiagramm der Funktionsweise eines zur Erzeugung von Nonces verwendeten Zufallszahlengenerators.
  • Beschreibung einer Ausführungsform der Erfindung
  • Es wird nun ein erfindungsgemäßer Schutzmechanismus an Hand eines Beispieles mit Bezug auf die beigefügten Zeichnungen beschrieben.
  • Das Kaufprotokoll
  • 1 zeigt ein Kaufprotokoll, das verwendet wird, wenn ein Kunde 102 Software kaufen möchte, die durch einen erfindungsgemäßen ECP-Mechanismus geschützt ist. Der Vertreiber 101 besitzt öffentliches und privates Schlüsselmaterial, das für digitale Signaturen verwendet wird; und jeder potentielle Kunde 102 besitzt öffentliches und privates Schlüsselmaterial, das für asymmetrische Vertraulichkeitsbeweisprotokolle verwendet wird. Jeder Teilnehmer stellt sein öffentliches Schlüsselmaterial anderen Teilnehmern zur Verfügung, hält aber sein privates Schlüsselmaterial geheim.
  • Im Schritt 1 erhält der Kunde 102 die geschützte Software 103 von dem Vertreiber 101, indem er die Software von einem Netzwerk-Bulletin-Board herunterlädt.
  • Ein später ausführlicher zu beschreibender Abfragemechanismus 24 (siehe 2) wird dergestallt in die geschützte Software 103 eingebettet, daß ein potentieller Angreifer nicht leicht den Abfragemechanismus 24 von dem geschützten Programm trennen kann. Der Angreifer müßte den Code auseinanderbauen und den Abfragemechanismus manuell entfernen. In dem Abfragemechanismus 24 ist das öffentliche Schlüsselmaterial des Vertreibers eingebettet. Wie beschrieben werden wird, verhindert der Abfragemechänismus 24, daß der Kunde die Software in dieser Phase ausführt. Das gesamte geschützte Programm, einschließlich des Abfragemechanismus, wird unter Verwendung des privaten Schlüsselmaterials des Vertreibers signiert.
  • Im Schritt 2 sendet der Kunde 102 ein Registrationspaket 104 per E-mail zu dem Vertreiber 101. Das Reg strationspaket 104 enthält eine Referenz auf ein öffentliches Verzeichnis, das das öffentliche Schlüsselmaterial des Kunden hält.
  • Im Schritt 3 findet der Software-Vertreiber 101 das öffentliche Schlüsselmaterial des Kunden und bettet das öffentliche Schlüsselmaterial des Kunden in eine Schlüsseldatei 105 ein und sendet die Schlüsseldatei 105 per E-mail zu dem Kunden 102. Nachdem der Kunde 102 die Schlüsseldatei 105 installiert hat, erlaubt der Schutzmechanismus dem Kunden 102, die geschützte Software 103 auszuführen, solange der Kunde über einen asymmetrischen Vertraulichkeitsbeweis beweisen kann, daß er Zugang zu dem privaten Schlüsselmaterial des Kunden hat.
  • Die Erzeugung der Schlüsseldatei 105 wird von einem Schlüsseldateigenerator durchgeführt, bei dem es sich um ein Programm handelt, das beim Vertreiber ausgeführt wird. Der Vertreiber 101 muß Sorgfalt walten lassen, um dieses Programm zu schützen.
  • Bei der. Verwendung des Schlüsseldateigenerators gibt ein Bediener die folgenden Informationen ein:
    Vertreibername: Vertreibername ist der Name der Firma des Vertreibers.
    Vertreiberpaßwort: Vertreiberpaßwort ist das Paßwort, das das private Schlüsselmaterial der Vertreiberfirma entriegelt. Firmenangestellte, die das Paßwort nicht kennen, können keine Schlüsseldateien erzeugen.
    Kundenname: Der Kundenname ist der distinguierte Name eines Kunden (definiert in [6]), für den eine Schlüsseldatei erzeugt werden soll. Der Name indiziert in eine Datenbank von öffentlichem Schlüsselmaterial.
    Schlüsseldateiname: Der Schlüsseldateiname ist der Name einer neuen Schlüsseldatei.
  • Nach dem Erhalt dieser Informationen baut der Schlüsseldateigenerator eine Schlüsseldatei 105 auf, die das öffentliche Schlüsselmaterial des Kunden enthält. Teile der Schlüsseldatei 105 erscheinen dem Kunden 102 als eine völlig zufällige Sequenz von Werten.
  • Der Aufbau der Schlüsseldatei 105 umfaßt die folgenden Operationen.
  • Als erstes erzeugt der Schlüsseldateigenerator eine Datei und fügt das öffentliche Schlüsselmaterial des Kunden zusammen mit tausenden von Tarnungsbit in die Datei ein. Bei dem vorliegenden Beispiel enthält jede Schlüsseldatei 105 ungefähr 480 000 Tarnungsbit. Diese Anzahl von Bit stellt eine signifikante Menge an Tarnungsmaterial dar, paßt jedoch in eine Standard-Email-Nachricht.
  • Jede Schlüsseldatei 105 speichert das öffentliche Schlüsselmaterial des Kunden an einer anderen Speicherstelle. Zusätzlich sind in jede Schlüsseldatei 105 verschlüsselte Kundeninformationen eingebettet, ohne daß der erforderliche Verschlüsselungsschlüssel enthüllt wird. Durch diese verschlüsselten Kundeninformationen kann ein Softwarevertreiber leicht den Eigentümer einer Schlüsseldatei 105 identifizieren, falls die Schlüsseldatei 105 an einem öffentlichen Ort, wie zum Beispiel einem Bulletin-Board, erscheint. Die Schlüsseldatei (oder Teile der Schlüsseldatei) 105 wird dann von dem Schlüsseldateigenerator mehrere Male mit verschiedenen Algorhythmen verschlüsselt und neu verschlüsselt. Als letztes signiert der Schlüsseldateigenerator die Schlüsseldatei 105 unter Verwendung des privaten Schlüsselmaterials des Vertreibers durch Anwenden eines digitalen Signaturalgorhythmus.
  • Eine Schlüsseldatei wird als validiert bezeichnet, wenn das Abfragemittel die Signatur des Vertreibers unter Verwendung der in der Binärdatei des Abfragemittels gespeicherten öffentlichen Schlüsselmaterials validieren und auf das in der Schlüsseldatei gespeicherte entschlüsselte öffentliche Schlüsselmaterial zugreifen kann.
  • Die Kunden Software
  • 2 zeigt die Softwarekomponenten, die in der Maschine des Kunden, einem Computer, installiert sein müssen, damit der Kunde 102 die geschützte Software 103 ausführen kann. Diese bestehen aus einem Schutzserver 20. Außerdem sind die Schlüsseldatei 105 und die geschützte Software 103 gezeigt. Die kopiergeschützte Software 103 enthält einen Abfragemechanismus 24.
  • Der Schutzserver 20 ist ein Programm, das der Kunde 102 ausführt, wenn das System zu Anfang gebootet wird. Der Kunde 102 aktiviert das System durch Einlegen einer Diskette, die eine verschlüsselte Kopie des privaten Schlüsselmaterials des Kunden enthält. Der Schutzserver 20 fordert den Kunden 102 dann zur Eingabe einer Paßphrase auf, die zur Entschlüsselung der Diskette verwendet wird. Die Schutzsoftware wird nicht weiter ausgeführt, wenn der Kunde nicht. die korrekte Paßphrase eingeben kann. Der Schutzserver 20 wird dann im Hintergrund ausgeführt und wartet auf Anforderungen zur Ausführung des asymmetrischen Vertraulichkeitsprotokolls.
  • Es sollte beachtet werden, daß der Schutzserver 20 niemals das private Schlüsselmaterial des Kunden aus seiner Prozeßgrenze heraus freigibt. Der Schutzserver 20 verwendet Schutzvorrichtungen des Betriebssystems, um seine eigene Integrität sicherzustellen. Der Schutzserver 20 wird in seinem eigenen Adreßraum ausgeführt und kommuniziert mit externen Prozessen.
  • Funktionsweise des Schutzmechanismus
  • 3 zeigt die Funktionsweise des Schutzmechanimus. Dieser wird ausgeführt, wenn der Kunde zu Anfang versucht, die geschützte Software 103 auszuführen, und wird außerdem periodisch während der Ausführung der geschützten Software 103 wiederholt. Durch Senden einer neuen Abfrage und Warten auf eine Antwort, die validiert werden kann.
  • (Box 31) Wenn der Abfragemechanismus 24 den Prozeß startet, greift der Abfragemechanismus 24 auf die der geschützten Software 103 zugeordnete Schlüsseldatei 105 zu und ruft eine Signaturvalidierungsfunktion in dem Abfragemechanismus 24 auf, um die Vertreibersignatur der Schlüsseldatei 105 unter Verwendung des öffentlichen Schlüsselmaterials des Vertreibers, das in den Abfragemechanismus 24 eingebettet ist, zu validieren. Diese Validierung der Schlüsseldateisignatur stellt sicher, daß ein Angreifer die Schlüsseldatei 105 oder ihre digitale Signatur nicht modifizieren kann, ohne zusätzlich den Abfragemechanismus 24 zu modifizieren. Vertreiber können wahlweise diesen Schutz durch Verwendung zusätzlicher proprietärer Verteidigungslinien ergänzen. Wenn die Schlüsseldatei 105 modifiziert worden ist, läßt der Abfragemechanismus 24 das Programm hängen oder stört die normale Programmausführung anderweitig.
  • Vorausgesetzt, daß die Signatur der Schlüsseldatei 105 validiert wird, analysiert der Abfragemechanismus 24 dann die Schlüsseldatei 105 unter Verwendung eines proprietären vertreiberspezifischen Algorhythmus, um das öffentliche Schlüsselmaterial des Kunden in der Schlüsseldatei 105 zu finden, und extrahiert das öffentliche Schlüsselmaterial des Kunden.
  • Das Abfrage- und das Antwortmittel führen das nachfolgend dargestellte asymmetrische Vertraulichkeitsprotokoll aus.
    A•B:h®,B,PA(r,$)
    A•B:r
  • Der Ausdruck verwendet die folgende Notation:
    – Das Abfragemittel (der Abfragemechanismus) 24 mit der Bezeichnung B (verzeichnet außerdem die Identität von B, z. B. „kopiergeschütztes Programm x")
    – Das Antwortmittel (der Schutzserver) 20 mit der Bezeichnung A (bezeichnet auch die Identität von A, z. B. „Schutzserver, Version 1". – r bedeutet eine Zufallszahl, die als Nonce verwendet wird – h(r) ist ein Nachrichten-Digest des Nonce – PA(r,B) ist eine Verschlüsselung des Nonce und der Identität von B unter Verwendung des öffentlichen Schlüsselmaterials von A.
  • (Box 31) Das Abfragemittel 24 der geschützten Software 103 erzeugt ein nicht erratbares Nonce (eine Zufallszahl). Als nächstes berechnet der Abfragemechn smus h(r) (das Nachrichten-Digest von r).
  • Der Abfragemechanismus 24 ruft dann eine Verschlüsselungsfunktion in dem Abfragemechanismus 24 auf, um das Nonce und die Identität von B mit dem öffentlichen Schlüsselmaterial des Kunden zu verschlüsseln. Der Abfragemechanismus leitet das Nachrichten-Digest des Nonce h(r), die Identität von B und das Ergebnis der Verschlüsselung mit einer Anforderung zur Teilnahme an einem asymmetrischen Vertraulichkeitsbeweis zu dem Schutzserver 20 weiter.
  • (Box 32) Wenn der Schutzserver 20 die Anforderung empfängt, entschlüsselt er zuerst den verschlüsselten Teil der Nachricht unter Verwendung des privaten Schlüsselmaterials des Kunden.
  • Als nächstes validiert der Schutzserver h(r) im Vergleich zu dem entschlüsselten Wert.
  • Als nächstes validiert der Schutzserver 20, daß seine Identität B in der Nachricht und in dem entschlüsselten Wert korrekt erscheint.
  • Wenn eine etwaige Validierung erfolglos bleibt, gibt der Schutzserver 20 einen Mißerfolg zurück, ohne das entschlüsselte Nonce zurückzugeben. Wenn die Validierung erfolgreich ist, gibt der Schutzserver 20 jedoch das entschlüsselte Nonce zurück.
  • (Box 33) Der Abfragemechanismus 24 vergleicht das empfangene entschlüsselte Nonce mit dem Nonce, das der Abfragemechanismus 24 ursprünglich verschlüsselt hat. Wenn sie nicht übereinstimmen, läßt der Abfragemechanismus 24 das geschützte Programm hängen oder stört die normale Programmausführung anderweitig.
  • Es ist also ersichtlich, daß das geschützte Programm nur dann weiter normal ausgeführt wird, wenn der Kunde über das ordnungsgemäße private Schlüsselmaterial und die ordnungsgemäße Schlüsseldatei 105 verfügt.
  • Der Nonce-Generator
  • Die Erzeugung eines Nonce wird von einem in dem Abfragemechanismus 24 enthaltenen Nonce-Generator durchgeführt. Die Funktionsweise des Nonce-Genetators ist wie folgt.
  • Als erstes fragt der Nonce-Generator eine große Anzahl von Systemparametern ab, z. B. die Systemzeit, den verbleibenden Platz in der Seitentabelle, die Anzahl logischer Plattenlaufwerke, die Namen der Dateien in dem Verzeichnis des Betriebssystems usw.
  • Als nächstes baut der Nonce-Generator unter Verwendung eines Zufallszahlengenerators eine Zufallszahl auf. Der Zufalhszahlengenerator besteht aus zwei Prozeß-Threads, die hier als Thread 1 und Thread 2 bezeichnet werden. 4 zeigt die Funktionsweise von Thread 1, bei dem es sich um den Hauptthread des Zufallszahlengenerators handelt.
  • (Box 51) Thread 1 erzeugt zuerst eine Datenstruktur value list zum Halten einer Liste von Zählerwerten. Die Liste ist zu Anfang leer.
  • (Box 52) Thread 1 setzt einen aktuellen Zählerwert auf Null und setzt ein done_test-flag auf FALSE.
  • (Box 53) Thread 1 erzeugt dann Thread 2. Thread 2 gibt einen asynchronen Plattenzugriff auf und schläft dann, bis der Plattenzugriff abgeschlossen ist. Wenn der Plattenzugriff abgeschlossen ist, setzt Thread 2 das Flag done_test auf TRUE. Man beachte, daß Thread 1 und Thread 2 sich das Flag done-test teilen.
  • (Box 54) Thread 1 erhöht den Zählerwert um eins.
  • (Box 55) Thread 1 prüft dann, ob das done_test-Flag nun TRUE ist, wodurch angezeigt wird, daß der von Thread 2 eingeleitete Plattenzugriff abgeschlossen ist. Wenn das done_test-Flag FALSE ist, dann kehrt der Thread zur Box 54 zurück. Somit ist ersichtlich, daß, während auf den Abschluß des Plattenzugriffs gewartet wird, Thread 1 den Zählerwert dauernd erhöht.
  • (Box 56) Wenn das done_test-Flag TRUE ist, beendet Thread 1 den Thread 2 und sichert den Zählerwert in der ersten freien Speicherstelle in value_list.
  • (Box 57) Thread 1 ruft dann eine Stautest-Funktion. auf, die den Grad der Zufälligkeit der Zählerwerte (oder Teile von Zählerwerten, z. B. Bit niederer Ordnung), die in value_list gesichert wurden, schätzt. Diese Funktion kann den Chiquadrattest, den Kolmogorov-Smirnov-Test oder den Seriell-Korrelation-Test verwenden, die in [3] beschrieben werden. Die Statstest-Funktion kann möglicherweise optimiert werden, um sicherzustellen, daß keine komplizierten Berechnungen für jeden Plattenzugriff wiederholt werden. Die Statstest-Funktion gibt einen Wert zurück, der angibt, wieviele Bit niederer Ordnung jedes gesicherten Zählerwertes als zufällig angesehen werden sollten.
  • (Box 58) Thread 1 vergleicht den Wert, der von der Statstest-Funktion bei der Kombination mit der Länge von value_list zurückgegeben wird, mit einem vorbestimmten Schwellenwert, um zu bestimmen, ob nun genug Zufallsbit erzeugt worden sind. Wenn noch nicht genug Zufallsbit erzeugt worden sind, kehrt der Prozeß zu der obigen Box 52 zurück, um so einen weiteren Zählerwert zu erzeugen und zu sichern.
  • (Box 59) Wenn die erforderliche Anzahl von Zufallsbit erzeugt worden ist, extrahiert Thread 1 die spezifizierte Anzahl von Bit niederer Ordnung aus jedem Zählerwert in value_list und gibt diese Bitsequenz als die Ausgangszufallszahl aus.
  • Kurz gefaßt ist ersichtlich, daß der Zufallszahlengenerator die Unvorhersehbarkeit der Zeitsteuerung einer Reihe von Plattenzugriffen als Quelle von Zufälligkeit bei der Erzeugung von Nonces ausnutzt (siehe [4]). Durch Erzeugen neuer Threads bei jedem Plattenzugriff nutzt der Zufallszahlengenerator außerdem Unvorhersehbarkeiten in der Funktionsweise des Schedulers des Betriebssystems als zweite Quelle von Zufälligkeit aus.
  • Die von der Statstest-Funktion durchgeführte Analyse gestattet dem Zufallszahlengenerator, sich für Prozessoren und Platten mit beliebiger Geschwindigkeit selbst abzustimmen, indem die Anzahl von Bit niederer Ordnung jedes gesicherten Zählerwertes zur Rückkehr berechnet wird. Zum Beispiel wird ein System mit einer Plattenzugriffszeit mit hoher Varianz mehr Zufallsbit pro Plattenzugriff erzeugen als ein System mit einer Plattenzugriffszeit mit niedriger Varianz. Zum Beispiel. erzeugt das System im Fall einer Platte des Typs Quantum 1080s (mittlere Schreibzeit 6 ms) und eines 486-Prozessors mit 66 Mhz ungefähr 45 Bit pro Sekunde. Als Alternative kann die Anzahl von Bit pro Plattenzugriff fest codiert und eine De-Skewing-Technik verwendet werden, um einen guten Zufälligkeitsgrad sicherzustellen.
  • Der Nonce-Generator fragt außerdem das Betriebssystem ab, um sicherzustellen, daß es jeden Plattenzugriff auf eine tatsächliche Platte ausgibt. Das letzte Ausgabe-Nonce wird durch Kombinieren der Ausgangszufallszahl aus dem Zufallszahlengenerator mit dem Ergebnis der Abfrage der Systemparameter wie oben beschrieben unter Verwendung eines Nachrichten-Digest gebildet.
  • Der obenbeschriebene Nonce-Generator arbeitet am besten, wenn er auf einem Betriebssystem ausgeführt wird, das direkten Zugriff auf die Platte bereitstellt, wie zum Beispiel Windows 95 oder Windows NT 4,0. Bei einem solchen Betriebssystem gestatten spezielle Aufrufe des Betriebssystems, die im Benutzerraum ausgeführten Programmen verfügbar sind, einem Programm, den internen Puffermechanismus des Betriebssystems zu umgehen und direkt auf die Platte zu schreiben. Die meisten Programme nutzen diese speziellen Betriebssystemaufrufe nicht aus, da sie relativ ineffizient und schwierig zu benutzen sein können. Unter Windows 95 und Windows NT kann ein Programm diese speziellen Aufrufe nur dann verwenden, wenn das Programm auf Daten zugreift, die ein Vielfaches der Sektorgröße der Platte aufweisen, indem das Betriebssystem abgefragt wird.
  • Wenn das Betriebssystem keinen direkten Zugriff auf die Platte bereitstellt, dann könnte der Abfragemechanismus 24 immer noch den Plattenzeitsteuerungszufallszahlengenerator verwenden. In diesem Fall würde sich die Qualität der erzeugten Werte jedoch mehr auf Unvorhersehbarkeiten in dem Scheduler des Betriebssystems verlassen, anstatt auf die der Plattenzugriffszeit innewohnende Varianz.
  • Das obenbeschriebene Beispiel der Erfindung nimmt an, daß das Betriebssystem einem Programm gestattet, mehrere Threads in einem einzigen Adreßraum zu erzeugen. Zusätzlich nimmt das Beispiel der Erfindung an, daß das Betriebssystem den Threads gestattet, auf Synchronisationsvar ablen wie zum Beispiel Semaphoren zuzugreifen. Die meisten modernen Betriebssysteme liefern diese Dienste. Das Beispiel der Erfindung verwendet mehrere Threads zur Implementierung, eines Mechanismus, der jede Plattenzugriffszeit quantifiziert. Wenn eine Implementierung der Erfindung jedoch auf einem System ausgeführt werden würde, das keine mehreren Threads oder Synchronisationsvariablen bereitstellt, dann könnte der Nonce-Generator andere Mechanismen einsetzen, z. B. Abfrage eines physikalischen Takts.
  • Einige mögliche Modifikationen
  • Der Kunde muß die Software nicht durch Herunterladen der Software von einem Netzwerk-Bulletin-Board erhalten. Der Kunde kann die Software auch auf einer Diskette, einer CD-ROM, einer DVD, einem PC-Kaufhaus, dem Internet oder anderen Verteilungsmedien erhalten.
  • Als Alternative könnte der Schutzserver 20 auch ein probabilistisches Verschlüsselungsverfahren verwenden, wie zum Beispiel das probabilistische B1um-Goldwasser-Verschlüsselungsschema mit öffentlichen Schlüsseln, um sicherzustellen, daß nur der Kunde das ordnungsgemäße private Schlüsselmaterial besitzt.
  • Es ist also ersichtlich, daß es gemäß der vorliegenden Erfindung nur wichtig ist, daß ein asymmetrischer Vertraulichkeitsbeweis verwendet wird.
  • Außerdem kann eine Chipkarte zum Speichern des privaten Schlüsselmaterials des Kunden (oder des privaten Schlüsselmaterials des Vertreibers, das bei der Schlüsseldateierzeugung verwendet wird) oder zum Zugriff darauf verwendet werden. Bei einer solchen Konfiguration mit Chipkartenmöglichkeit kann ein unrechtmäßiger- Kopierer das private Schlüsselmaterial nicht aus der Chipkarte extrahieren, wodurch eine noch größere Verteidigung gegenüber Angriffen bereitgestellt wird. Bestimmte Chipkarten werden erst dann ausgeführt, wenn der Benutzer ein korrektes Paßwort oder eine korrekte persönliche Geheimnummer angibt.
  • Wahlweise kann dieses vorliegende Beispiel erweitert werden, indem man das Abfragemittel so konstruiert, daß ein interner Timer, z. B. ein Zählthread, oder ein externer Timer, z. B. ein Takt, referenziert wird. Wenn eine im voraus definierte Schwelle endet, bevor das probablistische Beweisprotokoll abgeschlossen ist, dann bleibt die Validierung automatisch erfolglos.
  • Zusätzlich zu der Implementierung des Kopierschutzes kann man die Erfindung zum Verfolgen von unrechtmäßigen Software-Kopierern verwenden. Der Mechanismus liefert eine exzellente Verfolgbarkeit, ohne daß es notwendig ist, daß jeder Kunde eine einzigartige Version des Programms erhält.
  • Der Schutzserver 20, der Abfragemechanismus 24 und die geschützte Software 103, die oben beschrieben wurden, können in einer Anzahl verschiedener Konfigurationen eingesetzt werden.
  • Zum Beispiel:
    • – Der Schutzserver 20 kann in einem Adreßraum und der Abfragemechanismus 24 und die geschützte Software 103 in einem anderen Adreßraum in einer einzigen Maschine verankert sein.
    • - Der Schutzserver 20 kann in einem Adreßraum auf einer Maschine verankert sein, und der Abfragemechanismus 24 und die geschützte Software 103 können in einem anderen Adreßraum auf einer anderen Maschine verankert sein.
  • Außerdem können mehrere Kunden, die jeweils über ihre eigene Kopie des geschützten Softwareartikels verfügen, sich einen gemeinsamen Schutzserver 20 teilen, der auf Abfragen von allen diesen Kopien antwortet.
  • Eine andere Alternative besteht darin, daß sich mehrere Kunden gemeinsames privates Schlüsselmaterial teilen können. Eine Firma kann eine oder mehrere dieser Einsatzmöglichkeiten benutzen, wenn zum Beispiel Mehrfach-Benutzer-Lizenzierungsfunktionalität konstruiert wird.
  • Bei einer anderen möglichen Modifikation kann die Schlüsseldatei 105 versteckte Informationen bezüglich der selektieven Aktivierung von Diensten des geschützten Programms 103 erhalten. Zum Beispiel kann die Schlüsseldatei 105 spezifizieren, daß das geschützte Programm 103 die Ausführung eines Druckdienstes gestattet, aber die Ausführung eines Sichern-Auf-Platte-Dienstes sperrt. Als ein weiteres Beispiel kann die Schlüsseldatei 105 ein Ablaufdatum enthalten, das das letzte Datum beschreibt, an dem ein bestimmter Dienst ausgeführt werden kann. Das geschützte Programm 103 würde die Schlüsseldatei 105 lesen, um die Dienste zu bestimmen, die das geschützte Programm 103 ausführen soll. Ein Kunde könnte die Möglichkeit erhalten, mehr Dienste auszuführen, indem eine weitere Schlüsseldatei von dem Vertreiber angefordert wird.
  • Bei einer weiteren möglichen Modifikation könnte das geschützte Programm das Ergebnis der asymmetrischen Vertraulichkeitsbeweise zu anderen Programmen verteilen. Diese anderen Programme könnten dieses Ergebnis benutzen, um dabei zu helfen, zu bestimmen, ob die anderen Programme mit der Ausführung aufhören sollen oder auf beschränkte Weise ausgeführt werden sollen.
  • Die folgenden Publikationen werden in dieser Schrift zitiert:
    [1] Choudhury et al, Copyright Protection for Electronic Publishing over Computer Networks, IEEE Network, Mai/Juni 1995, Seiten 12–20
    [2] A. Menezes, P. Van Oorschot und S. Vanstone, Handbook of Applied Cryptography, CRC Press, Boca Raton, ISBN 0-8493-8523-7, Seiten 405–424, 1997.
    [3] D. Knuth, The Art of Computer Programming, Band 2, Sminumerical Algorithms, Addison-Weslez Publishing Co., Reading MA, 2. Auflage, Seiten 38 –73, ISBN 0-201-03822-6.
    [4] P. Fenstermacher et at, Cryptographic randomness from air turbulence in disk drives, Advances in Cryptology: Crypto 94, Seiten 114–120. Springer Verlag 1994
    [5] R. Rivest, The MD5 message-digest algorithm, RFC 1321, April 1992
    [6] ISO/IEC 9594-1, "Information technology – Open Systems Interconnection – The Directory: Overview of concepts, models, and services", International Organiyation for Standardization, Genf, Schweiz, 1995 (entspricht ITU-T Rec. X.509, 1993).

Claims (38)

  1. Computersystem mit einem asymmetrischen kryptographischen Schutzmechanismus zum Schutz von Software, wobei der Schutzmechanismus mindestens ein Abfragemittel (24), das einem geschützten Softwareposten (103) zugeordnet ist, und mindestens ein Antwortmittel mit privatem Schlüsselmaterial, auf das es zugreifen kann, umfaßt, wobei a) das Abfragemittel keinen Zugang zu dem privaten Schlüsselmaterial hat und in ihm gespeichertes öffentliches Schlüsselmaterial verwendet, b) das Abfragemittel und das Antwortmittel jeweils ein Mittel zum Erzeugen von Gemeinsames-Geheimnis-Informationen gemäß einem asymmetrischen Vertraulichkeitsschema umfassen, c) das Antwortmittel ein Mittel umfaßt, das dem Abfragemittel beweist, daß das Antwortmittel Zugang zu dem privaten Schlüsselmaterial hat, indem es unter Verwendung eines asymmetrischen Vertraulichkeitsbeweisschemas einen Dialog mit dem Abfragemittel führt, d) das Abfragemittel ein Mittel umfaßt, das verhindert, daß ein Kunde bestimmte oder alle der Softwareposten benutzt, ohne daß der Beweis erfolgreich ist.
  2. Computersystem nach Anspruch 1 und mit einem Mittel zum Eingeben eines zu schützenden Programms und zum Einbetten mindestens eines Abfragemittels in dieses Programm, wobei das Abfragemittel ein Mittel umfaßt, das – die Gemeinsames-Geheimnis-Informationen gemäß einem asymmetrischen Vertraulichkeitsschema erzeugt, – den Beweis des Antwortmittels, daß das Antwortmittel die Gemeinsames-Geheimnis-Informationen kennt, validiert und verhindert, daß ein Kunde bestimmte oder alle der Softwareposten benutzt, ohne daß der Beweis erfolgreich ist.
  3. Computersystem nach Anspruch 1 oder 2, bei dem das Antwortmittel ein Mittel umfaßt, das dem Abfragemittel beweist, das Antwortmittel das gemeinsame Geheimnis entdeckt hat.
  4. Computersystem nach einem der Ansprüche 1 bis 3, bei dem das Abfragemittel ein Mittel umfaßt, das den Beweis des Antwortmittels, daß das Antwortmittel das gemeinsame Geheimnis entdeckt hat, validiert.
  5. Computersystem nach Anspruch 4, bei dem das Abfragemittel ein Mittel umfaßt, das den Beweis des Antwortmittels, daß das Antwortmittel das gemeinsame Geheimnis entdeckt hat, validiert, indem es eine Demonstration, daß das Antwortmittel den Wert des gemeinsamen Geheimnisses entdeckt hat, validiert.
  6. Computersystem nach einem der Ansprüche 1 bis 5, – wobei das Abfragemittel ein Mittel umfaßt, das Informationen verschlüsselt und dann die verschlüsselten Informationen zu dem Antwortmittel sendet, – wobei das Antwortmittel ein Mittel umfaßt, das die verschlüsselten Informationen entschlüsselt und somit die Gemeinsames-Geheimnis-Informationen erzeugt und dann beweist, daß das Antwortmittel die Gemeinsames-Geheimnis-Informationen kennt.
  7. Computersystem nach einem der Ansprüche 1 bis 5, wobei das asymmetrische Vertraulichkeitsschema das Blum-Goldwasser-Schema ist.
  8. Computersystem nach einem der Ansprüche 1 bis 5, – wobei das Abfragemittel ein Mittel umfaßt, das eine Zufallsabfrage ausgibt, und – wobei die Informationen die Zufallsabfrage umfassen.
  9. Computersystem nach Anspruch 8, wobei das Mittel zum Ausgeben einer Zufallsabfrage ein Mittel zum Erzeugen einer Zufallsabfrage durch wiederholtes Timen von Antworten auf Zugriffe auf Geräte enthält.
  10. Computersystem nach Anspruch 8, wobei das Mittel zum Erzeugen einer Zufallsabfrage ein Mittel zum Forken neuer Threads dergestalt, daß durch Ausnutzen von Unverhersehbarkeiten in dem Scheduler des Betriebssystems ein zusätzlicher Zufälligkeitsgrad in die Zufallsabfrage eingeführt wird, enthält.
  11. Computersystem nach Anspruch 8, wobei das Mittel zum Ausgeben einer Zufallsabfrage ein Mittel zum Durchführen einer statistischen Prüfung zur Bestimmung der durch jeden der Plattenzugriffe erhaltenen Anzahl von Zufallsbit und ein Mittel zum Bewirken einer Wiederholung von Plattenzugriffen, bis eine vorbestimmte Anzahl von Zufallsbit erhalten wurde, enthält.
  12. Computersystem nach einem der Ansprüche 1 bis 11, wobei das Abfragemittel in den geschützten Softwareposten eingebettet ist.
  13. Computersystem nach einem der Ansprüche 1 bis 12, wobei das Abfragemittel das öffentliche Schlüsselmaterial zum Verschlüsseln der Informationen verwendet.
  14. Computersystem nach einem der Ansprüche 1 bis 13, wobei das System eine Schlüsseldatei (105) zum Halten des öffentlichen Schlüsselmaterials enthält.
  15. Computersystem nach Anspruch 14, wobei das in der Schlüsseldatei gehaltene öffentliche Schlüsselmaterial kryptographisch gesichert ist, wodurch es rechnerisch impraktikabel wird, irgendeinen Teil der Schlüsseldatei, darunter das öffentliche Schlüsselmaterial, zu verändern, ohne das Abfragemittel zu veränden.
  16. Computersystem nach, Anspruch 15, wobei die Schlüsseldatei Informationen enthält, die den Kunden identifizieren, an den der geschützte Sof-twareposten geliefert wurde.
  17. Computersystem nach Anspruch 16, wobei die Schlüsseldatei falsche Bit zum Tarnen des darin gehaltenen ersten öffentlichen Schlüsselmaterials enthält.
  18. Computersystem nach Anspruch 16, wobei die Schlüsseldatei Informationen bezüglich der selektiven Aktivierung von Diensten des geschützten Softwarepostens enthält.
  19. Computersystem nach einem der Ansprüche 1 bis 18 mit mehreren geschützten Softwareposten, die jeweils ihr eigenes Abfragemittel aufweisen, und einem einzigen, gemeinsam von allen geschützten Posten benutzten Antwortmittel.
  20. Gebrauch eines Computersystems nach Anspruch 1 bei der Verteilung von Software an mehrere Kunden, wobei jeder Kunde über ein Computersystems nach Anspruch 1 verfügt und eine identische Kopie des geschützten Programms und des Abfragemittels erhält.
  21. Verfahren zum Schutz eines Softwarepostens durch einen asymmetrischen kryptographischen Schutzmechanismus, wobei dem geschützten Softwareposten (103) mindestens ein Abfragemittel (24) zugeordnet ist und mindestens ein Antwortmittel auf privates Schlüsselmaterial zugreift, wobei a) das Abfragemittel keinen Zugang zu dem privaten Schlüsselmaterial hat und in ihm gespeichertes öffentliches Schlüsselmaterial verwendet, b) das Abfragemittel und das Antwortmittel jeweils gemäß einem asymmetrischen Vertraulichkeitsschema Gemeinsames-Geheimnis-Informationen erzeugen, c) das Antwortmittel dem Abfragemittel beweist, daß das Antwortmittel Zugang zu dem privaten Schlüsselmaterial hat, d) das Abfragemittel verhindert, daß ein Kunde bestimmte oder alle der Softwareposten benutzt, ohne daß der Beweis erfolgreich ist.
  22. Verfahren nach Anspruch 21, bei dem das Antwortmittel dem Abfragemittel beweist, daß das Antwortmittel das gemeinsame Geheimnis entdeckt hat.
  23. Verfahren nach Anspruch 21 oder 22, bei dem das Abfragemittel den Beweis des Antwortmittels, daß das Antwortmittel das gemeinsame Geheimnis entdeckt hat, validiert.
  24. Verfahren nach Anspruch 23, bei dem das Abfragemittel den Beweis des Antwortmittels, daß das Antwortmittel das gemeinsame Geheimnis entdeckt hat, validiert, indem es eine Demonstration, daß das Antwortmittel den Wert des gemeinsamen Geheimnisses entdeckt hat, validiert.
  25. Verfahren nach einem der Ansprüche 21 bis 24, – wobei das Abfragemittel Informationen verschlüsselt und dann die verschlüsselten Informationen zu dem Antwortmittel sendet, wobei das Antwortmittel die verschlüsselten Informationen entschlüsselt und somit die Gemeinsames-Geheimnis-Informationen erzeugt und dann beweist, daß das Antwortmittel die Gemeinsames-Geheimnis-Informationen kennt.
  26. Verfahren nach einem der Ansprüche 21 bis 25, wobei das asymmetrische Vertraulichkeitsschema das Blum-Goldwasser-Schema ist.
  27. Verfahren nach einem der Ansprüche 21 bis 26, – wobei das Abfragemittel eine Zufallsabfrage ausgibt und – wobei die Informationen die Zufallsabfrage umfassen.
  28. Verfahren nach Anspruch 27, wobei die Zufallsabfrage durch wiederholtes Timen von Antworten auf Zugriffe auf Geräte erzeugt wird.
  29. Verfahren nach Anspruch 28, wobei die Zufallsabfrage unter Forken neuer Threads erzeugt wird, dergestalt, daß durch Ausnutzen von Unverhersehbarkeiten in dem Scheduler des Betriebssystems ein zusätzlicher Zufälligkeitsgrad in die Zufallsabfrage eingeführt wird.
  30. Verfahren nach Anspruch 28, wobei die Zufallsabfrage unter Durchführung einer statistischen Prüfung erzeugt wird, um die durch jeden der Plattenzugriffe erhaltene Anzahl von Zufallsbit zu bestimmen, und eine Wiederholung von Plattenzugriffen bewirkt wird, bis eine vorbestimmte Anzahl von Zufallsbit erhalten wurde.
  31. Verfahren nach einem der Ansprüche 21 bis 30, wobei das Abfragemittel in den geschützten Softwareposten eingebettet ist.
  32. Verfahren nach einem der Ansprüche 21 bis 31, wobei das Abfragemittel das erste, öffentliche Schlüsselmaterial zur Verschlüsselung der Informationen verwendet.
  33. Verfahren nach einem der Ansprüche 21 bis 32, wobei das erste öffentliche Schlüsselmaterial in einer Schlüsseldatei gehalten wird.
  34. Verfahren nach Anspruch 33, wobei das in der Schlüsseldatei gehaltene erste öffentliche Schlüsselmaterial kryptographisch gesichert ist, wodurch es rechnerisch impraktikabel wird, irgendeinen Teil der Schlüsseldatei, darunter das erste öffentliche Schlüsselmaterial, zu verändern, ohne das Abfragemittel zu veränden.
  35. Verfahren nach, Anspruch 34, wobei die Schlüsseldatei Informationen enthält, die den Kunden identifizieren, an den der geschützte Softwareposten geliefert wurde.
  36. Verfahren nach Anspruch 34, wobei die Schlüsseldatei falsche Bit zum Tarnen des darin gehaltenen ersten öffentlichen Schlüsselmaterials enthält.
  37. Verfahren nach Anspruch 34, wobei die Schlüsseldatei Informationen bezüglich der selektiven Aktivierung von Diensten des geschützten Softwarepostens enthält.
  38. Verfahren nach einem der Ansprüche 21 bis 37 mit mehreren geschützten Softwareposten, die jeweils ihr eigenes Abfragemittel aufweisen, und einem einzigen, gemeinsam von allen geschützten Posten benutzten Antwortmittel.
DE69720972T 1997-05-28 1997-05-28 Computersystem und Verfahren zum Schutz von Software Expired - Lifetime DE69720972T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP97710012A EP0881558B1 (de) 1997-05-28 1997-05-28 Computersystem und Verfahren zum Schutz von Software

Publications (2)

Publication Number Publication Date
DE69720972D1 DE69720972D1 (de) 2003-05-22
DE69720972T2 true DE69720972T2 (de) 2004-02-19

Family

ID=8230129

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69720972T Expired - Lifetime DE69720972T2 (de) 1997-05-28 1997-05-28 Computersystem und Verfahren zum Schutz von Software

Country Status (4)

Country Link
US (1) US6651169B1 (de)
EP (1) EP0881558B1 (de)
CN (1) CN1165848C (de)
DE (1) DE69720972T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3646561B2 (ja) * 1999-05-12 2005-05-11 日本電気株式会社 量子暗号を用いた鍵配布方法
EP1297405A2 (de) * 2000-04-28 2003-04-02 Moldflow Corporation Netzwerk freigegebenes anwendungsprogram system und verfahren
US20030014635A1 (en) * 2001-03-20 2003-01-16 Laforge Laurence E. Method and mechanism for authenticating licenses of software and other digital products
US7647277B1 (en) 2002-10-25 2010-01-12 Time Warner Inc. Regulating access to content using a multitiered rule base
US7373658B1 (en) 2002-10-25 2008-05-13 Aol Llc Electronic loose-leaf remote control for enabling access to content from a media player
US7315946B1 (en) 2003-04-14 2008-01-01 Aol Llc Out-of-band tokens for rights access
US9286445B2 (en) * 2003-12-18 2016-03-15 Red Hat, Inc. Rights management system
US8156488B2 (en) * 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
US8375369B2 (en) * 2005-04-26 2013-02-12 Apple Inc. Run-time code injection to perform checks
CA2567312A1 (en) * 2005-11-04 2007-05-04 Yan-Fei Liu Resonant gate drive circuit with centre-tapped transformer
US7945789B2 (en) * 2006-09-12 2011-05-17 International Business Machines Corporation System and method for securely restoring a program context from a shared memory
US8095802B2 (en) * 2006-09-12 2012-01-10 International Business Machines Corporation System and method for securely saving a program context to a shared memory
US8190917B2 (en) * 2006-09-12 2012-05-29 International Business Machines Corporation System and method for securely saving and restoring a context of a secure program loader
US8095977B2 (en) * 2007-01-19 2012-01-10 Microsoft Corporation Secure PIN transmission
US8239967B2 (en) * 2008-01-15 2012-08-07 Microsoft Corporation Simultaneous tamper-proofing and anti-piracy protection of software
EP2461534A1 (de) * 2010-12-01 2012-06-06 Irdeto B.V. Steuerwortschutz

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1988005941A1 (en) * 1987-01-30 1988-08-11 Software Activation, Inc. Apparatus and method for regulating the use of proprietary computer software
US5351293A (en) * 1993-02-01 1994-09-27 Wave Systems Corp. System method and apparatus for authenticating an encrypted signal

Also Published As

Publication number Publication date
DE69720972D1 (de) 2003-05-22
CN1165848C (zh) 2004-09-08
CN1206151A (zh) 1999-01-27
US6651169B1 (en) 2003-11-18
EP0881558A1 (de) 1998-12-02
EP0881558B1 (de) 2003-04-16

Similar Documents

Publication Publication Date Title
DE69724235T2 (de) Computersystem und Verfahren zum Schutz von Software
DE69724947T2 (de) Rechnersystem und Verfahren zur Sicherung einer Datei
DE69724946T2 (de) Programmvermietungssystem und Verfahren zur Vermietung von Programmen
DE69720972T2 (de) Computersystem und Verfahren zum Schutz von Software
DE112011100182B4 (de) Datensicherheitsvorrichtung, Rechenprogramm, Endgerät und System für Transaktionsprüfung
DE69736696T2 (de) Netzwerk-Daten-Ubertragungssystem
AU716912B2 (en) Electronic copy protection mechanism
DE3587072T2 (de) Softwaresicherungsverfahren.
CN105592098B (zh) 区块链上的投票及ca证书的管理方法
DE69737083T2 (de) Verfahren und Vorrichtung zur Prüfung von Daten
DE69635143T2 (de) Verfahren und Vorrichtung zur Erzeugung und Verwaltung eines privaten Schlüssels in einem kryptografischen System mit öffentlichem Schlüssel
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE69534757T2 (de) System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
DE69734227T2 (de) Verfahren und Vorrichtung zur Erzwingung der Benutzung von Kryptographie in einer internationalen kryptographischen Struktur
DE69819485T2 (de) Verfahren und vorrichtung zur sicheren verarbeitung kryptographischer schlüssel
DE69921454T2 (de) Prüfung von sofwarenagenten und aktivitäten von agenten
DE60211841T2 (de) Vorrichtung zur Aktualisierung und zum Entzug der Gültigkeit einer Marke in einer Infrastruktur mit öffentlichen Schlüsseln
DE112005001654B4 (de) Verfahren zum Übermitteln von Direct-Proof-Privatschlüsseln an Geräte mittels einer Verteilungs-CD
DE69704684T2 (de) Vorrichtung und Verfahren zur Authentifizierung von Zugangsrechten eines Benutzers zu Betriebsmitteln nach dem Challenge-Response-Prinzip
DE19781841C2 (de) Verfahren zum automatischen Entscheiden der Gültigkeit eines digitalen Dokuments von einer entfernten Stelle aus
DE60023705T2 (de) Sichere verteilung und schutz einer schlüsselinformation
EP1099197B1 (de) Vorrichtung zum liefern von ausgangsdaten als reaktion auf eingangsdaten und verfahren zum überprüfen der authentizität und verfahren zum verschlüsselten übertragen von informationen
DE60026137T2 (de) Registrierung von kopiergeschütztem material in einem ausbuchungs-/einbuchungssystem
CN101313327A (zh) 用于建立未来要创建的数字内容的使用权限的方法和装置
DE69736246T2 (de) Vorrichtung zur gesicherten Kryptographischen Datenverarbeitung und zum Schutz von Speicherermitteln für Frankiermaschinen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition