DE69812139T2 - Verfahren und vorrichtung zur software-lizenz-erzwingung - Google Patents

Verfahren und vorrichtung zur software-lizenz-erzwingung Download PDF

Info

Publication number
DE69812139T2
DE69812139T2 DE69812139T DE69812139T DE69812139T2 DE 69812139 T2 DE69812139 T2 DE 69812139T2 DE 69812139 T DE69812139 T DE 69812139T DE 69812139 T DE69812139 T DE 69812139T DE 69812139 T2 DE69812139 T2 DE 69812139T2
Authority
DE
Germany
Prior art keywords
software
program
access authorization
license
identifier
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
DE69812139T
Other languages
English (en)
Other versions
DE69812139D1 (de
Inventor
Blaine Garst
Bertrand Serlet
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of DE69812139D1 publication Critical patent/DE69812139D1/de
Application granted granted Critical
Publication of DE69812139T2 publication Critical patent/DE69812139T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/12Payment architectures specially adapted for electronic shopping systems
    • G06Q20/123Shopping for digital content
    • G06Q20/1235Shopping for digital content with control of digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2137Time limited access, e.g. to a computer or data

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein die Verbreitung von Computer-Software und insbesondere ein Verfahren und eine Vorrichtung zur automatischen Erzwingung von Lizenzen für Computer-Software.
  • 2. STAND DER TECHNIK
  • Einige Computer-Software-Programme nutzen so genannte „Betriebsmittelbibliotheken", um einen Teil ihrer Funktionalität zu ermöglichen. Um eine Betriebsmittelbibliothek zu benutzen, ist meistens eine Lizenzgebühr notwendig. Bei aktuellen Verfahren ist es nicht immer möglich, allen Benutzern einer Betriebsmittelbibliothek die Lizenzgebühr in Rechnung zu stellen. Dieses Problem kann verstanden werden, wenn Software-Strukturen, die Betriebsmittelbibliotheken nutzen, mit Software-Grundstrukturen, die keine Betriebsmittelbibliothek nutzen, verglichen werden.
  • Software-Grundstruktur
  • 1 zeigt eine Software-Grundstruktur. In dem Beispiel von 1 weist die Software zwei Schichten auf. Diese Schichten sind das Betriebssystem 110 und das Anwendungsprogramm 120. Das Betriebssystem 110 ist für die Steuerung der Zuordnung und Nutzung von Hardware-Betriebsmitteln, wie Speicher, Zentraleinheitszeit (CPU-Zeit), Speicherplatz auf der Festplatte und Peripheriegeräte, verantwortlich. Das Betriebssystem 110 stellt verschiedene spezielle Funktionen bereit, die von verschiedenen Software-Programmen, wie dem Anwendungsprogramm 120, genutzt werden können. Das Software-Programm 120 stellt spezielle Endbenutzer-Funktionen bereit, wie Textverarbeitung, Datenbankverwaltung und anderes. Das Anwendungsprogramm 120 ist mit der Computer-Hardware über Funktionen verbunden, die vom Betriebssystem 110 bereitgestellt werden. Das Betriebssystem 110 stellt eine Schnittstelle zwischen der Hardware 100 und dem Anwendungsprogramm 120 bereit.
  • Betriebsmittelbibliotheken
  • 2 zeigt eine zweite Software-Struktur. Die Software-Struktur von 2 enthält eine weitere Software-Schicht, die Betriebsmittelbibliothek 215, die zwischen das Anwendungsprogramm 120 und das Betriebssystem 110 geschaltet ist. Die Betriebsmittelbibliothek 215 stellt eine vorgepackte Gruppe von Betriebsmitteln oder Routinen bereit, auf die von Software-Programmen, wie dem Anwendungsprogramm 220, bei der Abarbeitung zugegriffen werden kann. Diese Betriebsmittel stellen Funktionen auf einer höheren Ebene als die bereit, die von einem Betriebssystem 210 bereitgestellt werden. Beispielsweise können diese Betriebsmittel Routinen zum Verwalten einer grafischen Benutzeroberfläche, zum Kommunizieren mit anderen Computern über ein Netz oder zum Übertragen von Nachrichten zwischen Programmobjekten bereitstellen. Normalerweise stellt die Betriebsmittelbibliothek 215 ein oder mehr Betriebsmittel oder Funktionen bereit, die von vielen verschiedenen Software-Programmen verwendet werden können. Durch Verwendung der von der Betriebsmittelbibliothek 215 bereitgestellten vorgepackten Betriebsmittel kann ein Software-Programm, wie das Anwendungsprogramm 220, kleiner gemacht werden und die Programmentwicklungszeit kann verkürzt werden, da das Programm selbst keinen Code haben muss, um die von der Betriebsmittelbibliothek 215 bereitgestellten Funktionen bereitzustellen.
  • Außer von Anwendungsprogrammen werden Betriebsmittel auch von anderen Arten von Software-Programmen, unter anderem Gerätetreibern, Hilfsprogrammen und anderen Betriebsmittelbibliotheken verwendet.
  • Die Betriebsmittelbibliothek 215 stellt eine Gruppe von ein oder mehr Betriebsmitteln dar, die getrennt von einem Anwendungsprogramm oder anderen Software-Programm vorliegen und die von mehr als einem Software-Programm verwendet werden können. Beispielsweise kann die Betriebsmittelbibliothek 215 eine Anwendungsprogramm-Schnittstelle (API), ein Toolkit, ein Framework, eine Betriebsmittelbibliothek, eine Dynamic Link Library (DLL), ein Applet oder ein anderes wiederverwendbares Betriebsmittel, unter anderem ein Anwendungsprogramm, auf das von einem anderen Programm [z. B. durch Verwendung der Objektverknüpfung und -einbettung (OLE)] zugegriffen werden kann, aufweisen. Beispiele für Betriebsmittelbibliotheken sind Windows-DLLs (DLLs, die mit der Microsoft-WindowsTM-Betriebssystemumgebung verwendet werden), das Apple-MacintoshTM-Toolkit, die OpenStep-API von NeXT Software, Inc., OLE-aktivierte Anwendungsprogramme, wie Microsoft WordTM, Java-Programmpakete und ActiveX-Applets.
  • Ein Software-Programm nutzt normalerweise ein Betriebsmittel, das von einer Betriebsmittelbibliothek bereitgestellt wird, indem es eine entsprechende Nachricht an die Betriebsmittelbibliothek sendet und die Parameter liefert, die für das abzuarbeitende Betriebsmittel erforderlich sind. Vorausgesetzt, die entsprechenden Parameter sind geliefert worden, wird das Betriebsmittel abgearbeitet und es wird eine entsprechende Antwortmeldung an das anfordernde Programm zurückgesendet.
  • Ein Software-Programm kann Betriebsmittel verwenden, die von mehreren verschiedenen Betriebsmittelbibliotheken bereitgestellt werden, eine Betriebsmittelbibliothek kann von mehreren verschiedenen Programmen genutzt werden, und eine Betriebsmittelbibliothek kann selbst andere Betriebsmittelbibliotheken nutzen. 3 zeigt ein Computersystem, das mehrere Programme und mehrere Betriebsmittelbibliotheken umfasst. In dem Beispiel von 3 gibt es zwei Anwendungsprogramme 300 und 310 und drei Betriebsmittelbibliotheken 320, 330 und 340. Das Anwendungsprogramm 300 verwendet Betriebsmittel, die vom Betriebssystem 110 und von den Betriebsmittelbibliotheken 320 und 330 bereitgestellt werden. Das Anwendungsprogramm 310 verwendet Betriebsmittel, die vom Betriebssystem 110 und von den Betriebsmittelbibliotheken 330 und 340 bereitgestellt werden. Die Betriebsmittel der Betriebsmittelbibliothek 330 werden somit von den Anwendungsprogrammen 300 und 310 gemeinsam genutzt.
  • Lizenzgebühr
  • In der Regel wird einem Endbenutzer eine Lizenz für Computer-Software für eine Gebühr erteilt. Der Endbenutzer zahlt einen einmaligen Kaufpreis oder eine einmalige Lizenzgebühr für das Recht, das Endbenutzer-Programm auf einem Computersystem zu benutzen. Betriebsmittelbibliotheken werden vom Hersteller des Programms oft im Paket mit einem Endbenutzer-Programm als „Bundle" angeboten, sodass der Endbenutzer eine Kopie der von einem Programm benötigten Betriebsmittelbibliotheken erhält, wenn er eine Kopie des Programms kauft. Der Preis der Betriebsmittelbibliothek ist in den Preis des Endbenutzer-Programms integriert. Der Entwickler des Endbenutzer-Programms entrichtet wiederum eine Nutzungsgebühr an den Verkäufer der Betriebsmittelbibliothek für das Recht, die Betriebsmittelbibliothek im Paket anzubieten und weiterzuverkaufen.
  • Da eine Betriebsmittelbibliothek mit mehreren Endbenutzer-Programmen genutzt werden kann, kann der Endbenutzer, wenn er eine Kopie der Betriebsmittelbibliothek erhält, die Betriebsmittelbibliothek mit einem anderen Programm benutzen, das mit der Betriebsmittelbibliothek kompatibel ist. In diesem Fall erhält der Verkäufer der Betriebsmittelbibliothek zusätzliche Einnahmen, wenn die Betriebsmittelbibliothek des Verkäufers mit weiteren Programmen genutzt wird. Daher wäre es für einen Verkäufer einer Betriebsmittelbibliothek wünschenswert, sicherstellen zu können, dass ein Endbenutzer die Betriebsmittelbibliothek nur mit Programmen nutzen kann, für die an den Verkäufer für die Benutzung der Betriebsmittelbibliothek eine Lizenzgebühr gezahlt worden ist. Somit besteht Bedarf an einem Software-Mechanismus zur Erzwingung von Software-Lizenzverträgen, der automatisch sicherstellt, dass eine Betriebsmittelbibliothek nur von Programmen genutzt werden kann, die vom Betriebsmittelbibliothek-Verkäufer zur Verwendung mit der Betriebsmittelbibliothek lizenziert worden sind.
  • In EP 0.570.123 sind ein Verfahren und eine Vorrichtung beschrieben, die ein System-Überwachungsprogramm aufweisen, das die Fähigkeit eines Programms, das gerade ausgeführt werden soll, auf die Verwendung von vorgegebenen Betriebsmitteln (z. B. Datendateien, Plattenbeschreibbarkeit usw.) beschränkt. Das System-Überwachungsprogramm verarbeitet eine Datenstruktur mit einer Gruppe von Befugnissen, die das, was ein Programm tun darf, und/oder das, woran das Programm gehindert werden soll, definieren. Die Gruppe von Befugnissen und/oder Beschränkungen, die einem auszuführenden Programm zugewiesen wird, wird als „Programm-Autorisierungsinformationen" bezeichnet. Wenn die Programm-Autorisierungsinformationen definiert sind, werden sie danach mit mindestens einem auszuführenden Programm assoziiert, um dadurch die Betriebsmittel und Funktionen zu beschreiben, die das Programm nutzen und/oder nicht nutzen darf.
  • KURZE DARSTELLUNG DER ERFINDUNG
  • Die vorliegende Erfindung umfasst ein Verfahren und eine Vorrichtung zur Erzwingung von Software-Lizenzen für Betriebsmittelbibliotheken. Der hier verwendete Begriff „Betriebsmittelbibliothek" bezieht sich auf jedes wiederverwendbare Software-Betriebsmittel, das von mehr als einem Programm oder einer anderen Betriebsmittelbibliothek verwendet werden kann. Der Begriff „Betriebsmittelbibliothek" beinhaltet unter anderem eine Anwendungsprogramm-Schnittstelle (API), ein Toolkit, ein Framework, eine Laufzeitbibliothek, eine Dyna mit Link Library (DLL), ein Applet (z. B. ein Java- oder ActiveX-Applet), ein Anwendungsprogramm, auf dessen Funktionalität von anderen Programmen (z. B. mittels OLE) zugegriffen werden kann, oder ein anderes wiederverwendbares Betriebsmittel. Mit der vorliegenden Erfindung kann die Betriebsmittelbibliothek selektiv nur von berechtigten Endbenutzer-Software-Programmen genutzt werden. Die vorliegende Erfindung kann verwendet werden, um ein Lizenzierungssystem „für ein Programm" für eine Betriebsmittelbibliothek zu erzwingen, wodurch die Betriebsmittelbibliothek nur zur Verwendung mit bestimmten Software-Programmen lizenziert wird, und sie kann auch zur Erzwingung von Standortlizenzen und anderen Lizenzierungssystemen verwendet werden.
  • Bei einer Ausführungsform werden ein Zugriffsberechtigungsanzeiger, wie etwa ein Lizenztextstring, und ein entsprechender Lizenzschlüssel in ein Programm eingebettet, das zur Nutzung einer Betriebsmittelbibliothek lizenziert worden ist. Der Lizenztextstring und der Lizenzschlüssel werden beispielsweise von einem Betriebsmittelbibliothek-Verkäufer an einen Programmentwickler geliefert, der die Betriebsmittelbibliothek mit einem Endbenutzer-Programm, das gerade entwickelt wird, benutzen will.
  • Der Lizenztextstring umfasst Informationen zu den Bedingungen der Lizenz, unter denen das Endbenutzer-Programm die Betriebsmittelbibliothek nutzen darf. Bei einer Ausführungsform ist der Lizenzschlüssel eine algorithmische Ableitung, wie beispielsweise eine digitale Signatur, des Lizenztextstrings, die zur Authentisierung des Lizenztextstrings verwendet wird. Die Betriebsmittelbibliothek wiederum hat eine Prüfroutine, die Mittel zum Lesen des Lizenztextstrings und des Lizenzschlüssels und zum Bestimmen mit dem Lizenzschlüssel, ob der Lizenztextstring authentisch ist und ob der Lizenztextstring geändert worden ist, aufweist. Die Betriebsmittelbibliothek-Funktionen werden nur einem Programm zur Verfügung gestellt, das einen authentischen und ungeänderten Lizenztextstring hat.
  • Bei einer Ausführungsform stellt der Lizenzschlüssel die digitale Betriebsmittelbibliothek-Verkäufer-Signatur des Lizenztextstrings dar. Die Betriebsmittelbibliothek hat eine Prüfroutine zur Überprüfung der digitalen Signatur des Betriebsmittelbibliothek-Verkäufers. Die Betriebsmittelbibliothek wird nur dann geöffnet und zur Verwendung mit dem anfordernden Programm zugänglich gemacht, wenn der Lizenztextstring von der Betriebsmittelbibliothek als authentisch bestätigt wird. Bei einem gegebenen Programm kann nur der Eigentümer der Betriebsmittelbibliothek einen Lizenzschlüssel für einen bestimmten Lizenzvertrag erzeugen, der die Betriebsmittelbibliothek für dieses Programm und nur für dieses Programm öffnet. Jede Modifikation des Lizenzschlüssels oder des Lizenzvertrags-Textstrings in dem anfordernden Software-Programm wird von der Prüfroutine erkannt, was dazu führt, dass die Betriebsmittelbibliothek geschlossen bleibt. Der Lizenztextstring kann auch ein Ablaufdatum für die Lizenz angeben; in diesem Fall wird die Betriebsmittelbibliothek nur geöffnet, wenn das Ablaufdatum noch nicht erreicht ist.
  • Bei einer Ausführungsform wird ein Erzwingungsverfahren für einen Standort bereitgestellt, bei dem ein Software-Programm, das an einem bestimmten Benutzer-Standort vorliegt, mit der Betriebsmittelbibliothek funktioniert, wenn die Betriebsmittelbibliothek den richtigen Lizenzschlüssel für einen Standort erhält.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Beispiel für eine Software-Struktur.
  • 2 zeigt ein Beispiel für eine Software-Struktur mit einer Betriebsmittelbibliothek.
  • 3 zeigt ein Beispiel für eine Software-Struktur mit mehreren Anwendungsprogrammen und Betriebsmittelbibliotheken.
  • 4 zeigt eine Ausführungsform eines Computersystems, das mit der vorliegenden Erfindung verwendet werden kann.
  • 5 zeigt eine Software-Struktur einer Ausführungsform der vorliegenden Erfindung.
  • 6 zeigt eine Software-Struktur einer Ausführungsform der vorliegenden Erfindung.
  • 7 ist ein Ablaufdiagramm, das die Funktionsweise einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 8 zeigt eine Software-Struktur einer Ausführungsform der vorliegenden Erfindung.
  • 9 zeigt eine Software-Struktur einer Ausführungsform der vorliegenden Erfindung.
  • 10 ist Ablaufdiagramm, das die Funktionsweise einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 11 ist Ablaufdiagramm, das die Funktionsweise einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 12 ist Ablaufdiagramm, das die Funktionsweise einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 13 zeigt eine Software-Struktur einer Ausführungsform der vorliegenden Erfindung, die eine OpenStep-API verwendet.
  • 14 zeigt eine Ausführungsform der Erfindung, bei der die Betriebsmittelbibliothek ein Applet ist.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Es werden ein Verfahren und eine Vorrichtung zur Erzwingung von Software-Lizenzen beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Einzelheiten dargelegt, um eine umfassendere Darstellung der vorliegenden Erfindung zu ermöglichen. Ein Fachmann dürfte jedoch erkennen, dass die vorliegende Erfindung ohne diese speziellen Einzelheiten genutzt werden kann. In anderen Fällen sind bekannte Merkmale nicht näher beschrieben worden, damit die Erfindung nicht schwer verständlich wird.
  • Computersystem
  • Die vorliegende Erfindung kann auf einem von verschiedenen Computersystemen, unter anderem Netzwerkrechnern, Spezialrechnern und Universalrechnern, wie dem in 4 gezeigten Universalrechner, realisiert werden. Das in 4 gezeigte Computersystem umfasst eine CPU 400, die einen Zentralprozessor (CPU), einen Hauptspeicher, periphere Schnittstellen, Eingabe/Ausgabe-Geräte, ein Netzteil und zugehörige Schaltkreise und Anordnungen aufweist; einen Bildschirm 410, der ein Katodenstrahlröhren-Bildschirm, LCD-Bildschirm, Plasmabildschirm oder ein anderer Computer-Bildschirm sein kann; ein Eingabegerät 430, das eine Tastatur, eine Maus, ein Digitizer oder ein anderes Eingabegerät sein kann; einen Permanentspeicher 420, der magnetische, wiederbeschreibbare optische oder andere Massenspeicher umfassen kann; ein transportables Medienlaufwerk 425, das magnetische, wiederbeschreibbare optische oder andere transportable Wechselmedien aufweisen kann; und einen Drucker 450. Das Computersystem kann auch eine Netzwerk-Schnittstelle 440 aufweisen, die ein Modem aufweisen kann, mit dem das Computersystem über ein Kommunikationsnetz wie das Internet mit anderen Systemen kommunizieren kann. Es können auch verschiedene andere Konfigurationen von Computersystemen verwendet werden. Bei einer Ausführungsform weist das Computersystem eine Intel-PentiumTM-CPU auf und läuft in der Microsoft-Windows-95TM-Betriebssystemumgebung. Bei einer anderen Ausführungsform weist das Computersystem eine Motorola-CPU der Baureihe 680X0 auf und läuft unter dem Betriebssystem NeXTStep.
  • Wenn ein Computersystem die hier beschriebenen Prozesse und Prozessabläufe abarbeitet, ist es ein Mittel zur Erzwingung von Software-Lizenzen.
  • Die Erfindung kann in einem Computerprogrammcode in jeder gewünschten Computer-Programmiersprache realisiert werden.
  • Lizenzierungsmodul
  • 5 ist Blockdiagramm, das Software-Komponenten einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 5 gezeigt, weist diese Ausführungsform wie die herkömmliche Ausführungsform von 2 eine Computer-Hardware 100, ein Betriebssystem 110, ein Anwendungsprogramm 220 und eine Betriebsmittelbibliothek 215 auf. Die vorliegende Erfindung verwendet jedoch zwei zusätzliche Komponenten: ein Programmlizenzierungsmodul 500 und ein Betriebsmittelbibliotheks-Lizenzierungsmodul 510. Diese Module sind in 6 näher dargestellt.
  • 6 zeigt das Programmlizenzierungsmodul 500 und das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 in einer Ausführungsform der vorliegenden Erfindung. Wie in 6 gezeigt, enthält das Programmlizenzierungsmodul 500 den Lizenztextstring 600 und den Lizenzschlüssel 610. Der Lizenztextstring 600 enthält Daten, die die Bedingungen des Software-Lizenzvertrags angeben, unter denen der Betriebsmittelbibliothek-Verkäufer das das Programmlizenzierungsmodul 510 enthaltende Programm lizenziert hat, um die Betriebsmit telbibliothek des Verkäufers zu nutzen. Beispielsweise kann der Lizenztextstring 600 den folgenden Text aufweisen:
  • Tabelle 1: Beispiel eines Lizenztextstrings
  • „© Urheberrecht 1997. Das Programm A der Resource Library Vendor, Inc. ist für die Nutzung der Betriebsmittelbibliothek D lizenziert. Kein Ablaufdatum. Es ist rechtlich unzulässig, diese Lizenz zu kopieren oder auf ein anderes Programm zu übertragen."
  • In dem in Tabelle 1 gezeigten Beispiel gibt der Lizenztextstring 600 den Namen des Betriebsmittelbibliothek-Verkäufers („Resource Library Vendor, Inc."), den Namen des Programms, das für die Nutzung der Betriebsmittelbibliothek lizenziert ist („Programm A"), und den Namen der Betriebsmittelbibliothek an, die lizenziert worden ist („Betriebsmittelbibliothek D"). Der Lizenztextstring 600 gibt auch an, dass die Lizenz „Kein Ablaufdatum" hat.
  • Der Lizenzschlüssel 610 wird algorithmisch vom Lizenztextstring 600 abgeleitet. Bei einer Ausführungsform weist der Lizenzschlüssel 610 die digitale Signatur des Betriebsmittelbibliothek-Verkäufers auf.
  • Eine digitale Signatur ist ein Mechanismus, der entwickelt worden ist, um dazu beizutragen, die Unversehrtheit einer elektronischen Nachricht zu gewährleisten. Eine digitale Signatur dient dazu, die Authentizität einer elektronischen Nachricht zu überprüfen und festzustellen, ob eine elektronische Nachricht geändert worden ist.
  • Eine Form der digitalen Signatur verwendet eine Nachrichtenzusammenfassung (Digest). Eine Nachrichtenzusammenfassung ist ein Wert, der erzeugt wird, wenn eine elektronische Nachricht ein Einweg-Codierungsverfahren („Zusammenfassungsverfahren"), wie etwa eine Hash-Routine, durchläuft. Ein ideales Zusammenfassungsverfahren ist ein Zusammenfassungsverfahren, für das die Wahrscheinlichkeit, dass zwei verschiedene elektronische Nachrichten die gleiche Nachrichtenzusammenfassung erzeugen, fast Null ist.
  • Bei dieser Form der digitalen Signatur müssen der Absender und der Empfänger wissen, welches Zusammenfassungsverfahren gerade verwendet wird. Der Absender erzeugt die elektronische Nachricht und erzeugt eine Nachrichtenzusammenfassung, indem er die elektronische Nachricht das Zusammenfassungsverfahren durchlaufen lässt. Der Absender signiert digital die resultierende Nachrichtenzusammenfassung, indem er beispielsweise eine algorithmische Operation an der Nachrichtenzusammenfassung unter Verwendung des privaten Schlüssels des Absenders ausführt. Anstatt eine Nachrichtenzusammenfassung zu erzeugen und die Nachrichtenzusammenfassung zu signieren, kann ein Absender alternativ die Nachricht selbst signieren.
  • Um die Authentizität der digital signierten Nachricht zu überprüfen, erhält der Empfänger die elektronische Nachricht und die digitale Signatur des Absenders. Der Empfänger überprüft die digitale Signatur mit einem entsprechenden Überprüfungsverfahren. Bei einer Ausführungsform beispielsweise überprüft der Empfänger die digitale Signatur, indem er ein algorithmisches Verfahren an der digitalen Signatur unter Verwendung des öffentlichen Schlüssels des Absenders durchführt. Das Überprüfungsverfahren bestätigt, dass (1) die elektronische Nachricht vom Absender digital signiert wurde und (2) der Inhalt der elektronischen Nachricht ab dem Zeitpunkt, zu dem sie signiert wurde, bis zu dem Zeitpunkt, zu dem die digitale Signatur überprüft wurde, nicht geändert wurde.
  • Bei der vorliegenden Ausführungsform der Erfindung ist die „Nachricht", die digital signiert wird, der Lizenztextstring 600. Der Unterzeichner ist der Betriebsmittelbibliothek-Verkäufer. Das Ergebnis ist der Lizenzschlüssel 610.
  • Mit dem Lizenztextstring 600 und dem Lizenzschlüssel 610 überprüft das Betriebsmittelbibliotheks-Lizenzierungsmodul 510, dass ein anforderndes Programm für die Nutzung der Betriebsmittelbibliothek lizenziert worden ist. Wie in 6 gezeigt, weist das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 ein Lizenzüberprüfungsmodul 620 auf. Wenn ein Programm den Zugriff auf die Betriebsmittelbibliothek anfordert, liest das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 den Lizenztextstring 600 und den Lizenzschlüssel 610 aus dem anfordernden Programm. Bei einer Ausführungsform werden der Lizenztextstring 600 und der Lizenzschlüssel 610 vom anfordernden Programm zusammen mit einer Anforderung für den Zugriff auf die Betriebsmittelbibliothek an die Betriebsmittelbibliothek gesendet. Bei einer anderen Ausführungsform liest das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 den Lizenztextstring 600 und den Lizenzschlüssel 610 aus einem Konstantendefinitionsabschnitt des anfordernden Programms.
  • Das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 verwendet den Lizenzschlüssel 610 zur Überprüfung des Inhalts des Lizenztextstrings 600 in der gleichen Weise, wie eine digitale Signatur zur Überprüfung einer elektronischen Nachricht verwendet wird. Unter Verwendung des Lizenzüberprüfungsmoduls 620 überprüft das Betriebsmittelbibliotheks-Lizenzierungsmodul 510, dass der Lizenztextstring 600 authentisch ist (d. h. vom Betriebsmittelbibliothek-Verkäufer erzeugt wurde) und nicht geändert wurde. Wenn das Überprüfungsverfahren nicht erfolgreich ist, was darauf hinweist, dass die digitale Signatur nicht in Ordnung ist, lehnt das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 die Anforderung des anfordernden Programms für den Zugriff auf die Betriebsmittelbibliothek ab. Wenn das Überprüfungsverfahren erfolgreich ist, überprüft das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 die Lizenz, um im Lizenztextstring 600 enthaltene Lizenzbeschränkungen festzustellen.
  • Der vorstehend in Tabelle 1 angegebene exemplarische Lizenztextstring 600 identifiziert das „Programm A" als das Programm, das für die Nutzung der Betriebsmittelbibliothek lizenziert ist, und gibt an, dass die Lizenz „Kein Ablaufdatum" hat. Das Betriebsmittelbibliotheks-Lizenzierungsmodul 510 erhält den Namen „Programm A" aus dem Lizenztextstring 600 und kontrolliert, ob das anfordernde Programm das Programm A ist. Wenn das anfordernde Programm nicht das Programm A ist, wird der Zugriff auf die Betriebsmittelbibliothek verwehrt.
  • Anstatt wie in dem vorliegenden Beispiel „Kein Ablaufdatum" anzugeben, kann der Lizenztextstring 600 ein Ablaufdatum und/oder ein Anfangsdatum für die Lizenz angeben. Wenn solche Daten im Lizenztextstring 600 angegeben sind, überprüft das Betriebsmittelbibliotheks-Lizenzierungsmodul 510, dass das aktuelle Datum in die Laufzeit der Lizenz fällt, bevor es den Zugriff auf die Betriebsmittelbibliothek gewährt. Wenn das aktuelle Datum nicht in die Laufzeit der Lizenz fällt, wird dem anfordernden Programm der Zugriff auf die Betriebsmittelbibliothek verwehrt.
  • Zugriffsverfahren
  • Das von einer Betriebsmittelbibliothek verwendete Verfahren, einem anfordernden Programm bei einer Ausführungsform der Erfindung den Zugriff zu gewähren oder zu verwehren, ist in 7 dargestellt. Bei einer Ausführungsform wird dieses Verfahren zum ersten Mal durchgeführt, wenn ein Programm den Zugriff auf eine Betriebsmittelbibliothek anfordert. Bei einer anderen Ausführungsform wird das Verfahren immer dann durchgeführt, wenn die Betriebsmittelbibliothek eine Anforderung für den Zugriff empfängt.
  • Wie in 7 gezeigt, beginnt das Verfahren damit, dass im Schritt 700 ein anforderndes Programm die Benutzung der Betriebsmittelbibliothek anfordert. Im Schritt 705 erhält die Betriebsmittelbibliothek den Lizenztext und den Lizenzschlüssel des anfordernden Programms. Der Lizenztext und der Lizenzschlüssel können beispielsweise in der Anforderung enthalten sein, oder die Betriebsmittelbibliothek kann den Lizenztext und den Lizenzschlüssel aus einem Konstantendeklarationsbereich des anfordernden Programms lesen, oder die Betriebsmittelbibliothek kann den Lizenztext und den Lizenzschlüssel mit anderen Mitteln erhalten.
  • Nachdem die Betriebsmittelbibliothek den Lizenztext und den Lizenzschlüssel erhalten hat, überprüft sie im Schritt 710 die Authentizität des Lizenztextes mit Hilfe des Lizenzschlüssels. Im Schritt 725 stellt die Betriebsmittelbibliothek fest, ob die Überprüfung erfolgreich ist. Wenn die Authentizität des Lizenztextes nicht bestätigt wird, wird im Schritt 730 der Zugriff auf die Betriebsmittelbibliothek verwehrt.
  • Wenn die Überprüfung der Authentizität des Lizenztextes erfolgreich ist, prüft die Betriebsmittelbibliothek im Schritt 735 die im Lizenztext enthaltenen Lizenzbedingungen. Im Schritt 740 stellt die Betriebsmittelbibliothek fest, ob im Lizenztext eine begrenzte Laufzeit angegeben ist. Wenn keine Laufzeit angegeben ist, geht das Verfahren zum Schritt 755. Wenn eine Laufzeit angegeben ist, prüft die Betriebsmittelbibliothek im Schritt 745, ob die Laufzeit abgelaufen ist. Die Laufzeit ist abgelaufen, wenn das aktuelle Datum vor einem im Lizenztext angegebenen Anfangsdatum liegt oder wenn das aktuelle Datum nach einem im Lizenztext angegebenen Ablaufdatum liegt. Wenn die Laufzeit abgelaufen ist, wird im Schritt 750 der Zugriff auf die Betriebsmittelbibliothek verwehrt.
  • Wenn die Laufzeit nicht abgelaufen ist, geht die Verarbeitung zum Schritt 755 weiter. Im Schritt 755 stellt die Betriebsmittelbibliothek fest, ob das anfordernde Programm das Programm ist, das im Lizenztext angegeben ist. Wenn das anfordernde Programm nicht das im Lizenztext angegebene Programm ist, wird im Schritt 760 der Zugriff auf die Betriebsmittelbibliothek verwehrt. Wenn das anfordernde Programm das im Lizenztext angegebene Programm ist, prüft im Schritt 765 die Betriebsmittelbibliothek, ob es weitere Lizenzbedingungen gibt, die im Lizenztext enthalten sind. Wenn es keine weiteren Lizenzbedingungen gibt, wird im Schritt 770 der Zugriff auf die Betriebsmittelbibliothek gewährt. Wenn es weitere Lizenzbedingungen gibt, prüft die Betriebsmittelbibliothek im Schritt 775, ob diese Bedingungen erfüllt sind. Wenn die Bedingungen nicht erfüllt sind, wird im Schritt 780 der Zugriff auf die Betriebsmittelbibliothek verwehrt. Wenn die Bedingungen erfüllt sind, wird im Schritt 785 der Zugriff auf die Betriebsmittelbibliothek gewährt.
  • Die Erfindung kann in der Sprache Objective C realisiert werden. Objective C ist im Wesentlichen die Sprache ANSI C mit Objekt-Messaging-Erweiterungen. Eine vollständige Beschreibung der Sprache Objective C erscheint in „Object-Oriented Programming and the Objective-C Language" („Objektorientierte Programmierung und die Sprache Objective C"), herausgegeben von Addison-Wesley (ISBN 0-201-63251-9) (1993). Die Erfindung kann jedoch auch in einer anderen geeigneten Computer-Programmiersprache realisiert werden.
  • Wie vorstehend beschrieben, kann die Erfindung durch Einbetten entsprechender Segmente des Programmcodes in den Quellcode eines Programms, das eine Betriebsmittelbibliothek nutzt, und in den Quellcode der Betriebsmittelbibliothek selbst realisiert werden. Die Betriebsmittelbibliothek ist so kompiliert, dass sie eine ausführbare Implementierung erzeugt, die mit einer kompilierten und ausführbaren Version des Programms verknüpft werden kann.
  • Anwendungsprogramm-Schnittstelle (API)
  • Bei einer Ausführungsform der Erfindung ist die Betriebsmittelbibliothek eine Anwendungsprogramm-Schnittstelle (application program interface/„API"). Eine API hat drei Hauptfunktionen: Sie empfängt Anforderungen von einem Anwendungsprogramm, um Grundoperationen, wie Empfangen von Benutzer-Eingangssignalen oder Anzeigen von Ausgangssignalen, durchzuführen; sie wandelt jede Anforderung in eine Form um, die von dem jeweiligen Betriebssystem, das gerade in Gebrauch ist, verstanden werden kann; und sie empfängt Antworten und Ergebnisse vom Betriebssystem, formatiert sie einheitlich und sendet sie an das Anwendungsprogramm zurück.
  • APIs werden in der Regel in einer ausführbaren Implementierung hergestellt, die speziell für das zugrundeliegende Betriebssystem kompiliert wird. Das ist notwendig, da unterschiedliche Betriebssysteme unterschiedliche Aufrufmechanismen und Kommunikationsverfahren für solche einfachen Operationen wie Lesen aus einem und Schreiben in einen Massenspeicher haben. Beispielsweise kann eine API eine „Draw(x,y)"-Funktion haben, die von einem Anwendungsprogramm aufgerufen werden kann, um einen Punkt mit den Koordinaten (x,y) auf dem Bildschirm eines Computersystems zu zeichnen. Nach Erhalt einer Draw(x,y)-Anforderung von einem Anwendungsprogramm wandelt die API die Anforderung in einen Befehls- oder Funktionsaufruf um, der für das Betriebssystem bestimmt ist, das gerade in Gebrauch ist. Beispielsweise könnte die API die Draw(x,y)-Anforderung in eine Reihe von Maschinenbefehlen umwandeln, um Register mit x,y-Werten zu laden und eine Betriebssystemfunktion aufzurufen oder einen Interrupt zu erzeugen. Die Person, die das Anwendungsprogramm schreibt, braucht sich um solche Einzelheiten nicht zu kümmern.
  • In einigen Fälle verweist die API auf Funktionen oder ruft Funktionen auf, die in einer externen Funktionsbibliothek lokalisiert sind, wie etwa eine Gruppe von Gerätetreibern, anstatt das Betriebssystem direkt aufzurufen. Gerätetreiber sind kleine ausführbare Programme, die es dem Betriebssystem ermöglichen, bestimmte Hardware-Geräte, wie Grafikkarten und Drucker, zu adressieren und mit ihnen zu arbeiten. Gerätetreiber stellen ebenfalls eine Form der Betriebsmittelbibliothek dar.
  • In Abhängigkeit vom Betriebssystem kann die API in einem von mehreren ausführbaren Formaten, wie Laufzeitbibliothek, Geräte-verknüpfte Bibliothek (device linked library/DLL) oder einer anderen ausführbaren Datei, hergestellt werden. Die API wird dem Endbenutzer in einer von diesen Objektcodeversionen oder „Implementierungen" der API zur Verfügung gestellt. Im Branchengebrauch kann sich der Begriff API auf eine Definition oder Festlegung von Funktionen in der API, auf den Quellcode der API, die diese Funktionen implementiert, oder auf die ausführbare Version dieses Quellcodes beziehen, die schließlich an die Endbenutzer verteilt und von diesen benutzt wird. Beispiele für APIs sind die OpenStep-API, die von NeXT Software, Inc., Redwood City, Kalifornien, lieferbar ist, und die Visual-Basic-DLL, die von Microsoft Corporation, Redmond, Washington, erhältlich ist.
  • Der hier benutzte Begriff API umfasst auch die Programmiersprache Java. Anstatt sie in ausführbarer Form zu vertreiben, werden Java-Programme als Pakete von „Bytecodes" vertrieben. Die Bytecodes werden mit einer virtuellen Java-Maschine (Java Virtual Machine, JVM), die in dem Computer resident ist, auf dem das Java-Programm läuft, in der Laufzeit zu einem ausführbaren Code kompiliert. Für unterschiedliche Rechnerprozessoren und Betriebssysteme werden unterschiedliche JVMs verwendet. Alle JVMs lesen jedoch den gleichen Bytecode.
  • Daher sind Java-Bytecode-Programme und -Pakete Plattform-unabhängig. Java-Bytecode-Programme und -Pakete brauchen nur in einer Form geschrieben zu werden. Die JVMs achten darauf, den Bytecode an unterschiedliche Rechnerplattformen anzupassen. Java-Bytecode-Pakete können von verschiedenen Java-Programmen verwendet werden und stellen an sich Betriebsmittelbibliotheken dar.
  • In der Regel kann der Endbenutzer die ausführbare Version der API-Implementierung getrennt von einem bestimmten Anwendungsprogramm von dessen Erzeuger oder Verkäufer erwerben, oder der Endbenutzer kann die API-Implementierung als Paket mit einem Anwendungsprogramm kaufen, das die API zum Laufen braucht und verwendet.
  • In jedem Fall wird die API-Implementierung in ausführbarer Form im Computersystem des Endbenutzers installiert (normalerweise durch Kopieren der API-Implementierung in einen Massenspeicher, wie etwa eine Festplatte). Nach der Installation der API-Implementierung kann der Endbenutzer ein Anwendungsprogramm, das die API-Implementierung verwendet, starten (kann er mit der Abarbeitung des Programms beginnen). Das Anwendungsprogramm lokalisiert die API-Implementierung auf der Festplatte und referenziert die API-Implementierung, ruft sie auf oder wird mit ihr verknüpft. Wenn bei der Abarbeitung das Anwendungsprogramm eine Operation ausführen muss, die in der API-Implementierung implementiert ist, wie etwa Zeichnen einer Linie auf dem Bildschirm, ruft das Anwendungsprogramm die entsprechende Funktion in der API-Implementierung auf. Die entsprechende Funktion teilt dann dem Betriebssystem (oder den Geräte-unabhängigen Fenstertechnik-Funktionen oder einem anderen Gerätetreiber) mit, wie die gewünschte Operation auszuführen ist.
  • Ein wichtiger Vorteil der Verwendung von APIs besteht darin, dass ein Anwendungsprogramm, wie etwa ein Textverarbeitungsprogramm, so geschrieben werden kann, dass es nur mit der API und nicht mit dem Betriebssystem kommuniziert. Ein solches Anwendungsprogramm kann zu einem anderen Betriebssystem verschoben oder portiert werden, ohne den Programm-Quellcode zu modifizieren. Daher heißt es, dass Anwendungsprogramme, die für APIs geschrieben sind, Betriebssystem-unabhängig sind, was bedeutet, dass der Anwendungsprogramm-Quellcode ohne Modifikation zu einem anderen Computersystem mit einem anderen Betriebssystem verschoben werden kann und neukompiliert und mit einer für dieses Betriebssystem erstellten API-Implementierung verknüpft werden kann. Die Fähigkeit, den unmodifizierten Anwendungsprogramm-Quellcode zu anderen Betriebssystemen zu verschieben, ist ein wichtiger Vorzug der Verwendung von APIs.
  • Vom Standpunkt von API-Verkäufern aus haben APIs jedoch auch den wesentlichen Nachteil, dass ein Endbenutzer nur eine Kopie der API braucht, um mehrere Anwendungsprogramme laufen zu lassen, die mit der API kompatibel sind. Da die API generische Eingabe-, Ausgabe- und Verarbeitungsfunktionen bereitstellt, arbeitet sie mit vielen verschiedenen Endbenutzer-Anwendungsprogrammen. Einige Software-Verkäufer wollen die Verwendung ihrer API-Implementierungen auf eine Anwendung beschränken oder wollen den Endbenutzer auffordern, einen Schlüssel für die API für jede vom Endbenutzer erworbene Anwendung zu kaufen, sodass der Endbenutzer eine andere oder höhere Gebühr für die Verwendung weiterer Anwendungsprogramme zahlt.
  • Die vorliegende Erfindung bietet eine Möglichkeit, eine Betriebsmittelbibliothek so anzuordnen, dass eine API nur mit bestimmten zugelassenen Anwendungs- oder anderen Endbenutzer-Programmen funktioniert.
  • API-Lizenz-Ausführungsform
  • Wie auf dem Fachgebiet bekannt, kann der Quellcode eines Computerprogramms in mehrere Komponenten unterteilt werden, die einen Variablendeklarationsbereich, einen Konstantendeklarationsbereich und einen Prozedurvereinbarungsbereich umfassen. 9 zeigt eine Ausführungsform der vorliegenden Erfindung, die mit einer API verwendet wird. Wie in 9 gezeigt, hat bei dieser Ausführungsform das Anwendungsprogramm 900 eine LicenseKeyString-Konstante 902 und eine LicenseAgreementString-Konstante 904 im Konstantendeklarationsbereich 901 des Quellcodes des Anwendungsprogramms. Bei der Ausführungsform von 9 sind der LicenseKeyString 902 und der LicenseAgreementString 904 als globale String-Konstanten deklariert.
  • Bei einer Ausführungsform enthält der LicenseAgreementString 904 einen vom Verkäufer der API erstellten Textstring, der in einem für den Menschen lesbaren Text die Lizenzbeschränkungen für die Verwendung der für das Anwendungsprogramm verwendbaren API beschreibt. Beispielsweise kann der LicenseAgreementString wie folgt lauten: „Diese API ist für die eigene interne Nutzung nur für die gleichzeitige Verwendung nur mit dem Textverar beitungs-Anwendungsprogramms lizenziert." Der spezielle Text des LicenseAgreementStrings wird vom Lizenzgeber der API erstellt. Der Text kann eine beliebige Kombination aus Wörtern, Symbolen oder Zahlen sein.
  • Der LicenseKeyString 904 enthält einen Schlüssel, der dem LicenseAgreementString 902 entspricht und auf diesem basiert. Beispielsweise kann der LicenseKeyString eine digitale Signatur des LicenseAgreementStrings sein, die dadurch erstellt wird, dass der LicenseAgreementString und ein privater Schlüssel des API-Verkäufers einem Digitalsignatur-Verfahren unterzogen werden. Das genaue Verfahren zur Erzeugung des LicenseKeyStrings ist nicht entscheidend, wenn nur der Lizenzgeber der API einen eindeutigen LicenseKeyString, der dem LicenseAgreementString entspricht, erzeugen kann. Die Werte der beiden Strings werden vom Verkäufer der API erzeugt und der Person oder Firma zur Verfügung gestellt, die gerade das Endbenutzer-Anwendungsprogramm entwickelt (beispielsweise kann der API-Verkäufer die beiden String-Werte per E-Mail an den Anwendungsprogramm-Entwickler senden). Der Anwendungsprogramm-Entwickler wird vom API-Verkäufer angewiesen, die String-Deklarationen in den Quellcode des Endbenutzer-Anwendungsprogramms des Entwicklers einzufügen. Die beiden Werte können öffentlich sein, sodass der API-Verkäufer oder der Entwickler die Werte nicht vor Benutzern des Endbenutzer-Anwendungsprogramms geheim halten oder verbergen muss. Die beiden Strings werden in die ausführbare Form (oder bei Java zu Bytecode-Paketen) des Anwendungsprogramms kompiliert. Dadurch werden der LicenseKeyString und der LicenseAgreementString in den ausführbaren Code (oder Bytecode) des Anwendungsprogramms eingebunden.
  • Wie außerdem in 9 gezeigt, hat die API 920 eine UNLOCK-Funktion 923 und eine CHECK-LICENSE-Funktion 921, um zu prüfen, ob der LicenseKeyString mit dem LicenseAgreementString zusammenpasst. Bei der Ausführungsform von 9 weist die CHECK-LICENSE-Funktion 921 eine Teilfunktion CHECK 922 auf.
  • API-Verfahren
  • 10 zeigt ein Ablaufdiagramm der Verarbeitungsschritte der UNLOCK-Funktion 923. Das Verfahren von 10 kann beispielsweise während der Laufzeit durchgeführt werden, wenn das Anwendungsprogramm und die API kompiliert, verknüpft und abgearbeitet werden.
  • Die UNLOCK-Funktion wird von der API nach Initialisierung der API aufgerufen, beispielsweise nachdem sie vom Anwendungsprogramm 900 oder einer anderen Aufruffunktion oder einem anderen Objekt oder Programm (der „aufrufenden Einheit") aufgerufen worden ist. Die Verarbeitung beginnt im Schritt 1002. Die UNLOCK-Funktion prüft zunächst, ob die API eine Standortlizenz erhalten hat, mit der die API mit einer aufrufenden Einheit auf dem Computer verwendet werden kann, auf dem sie installiert worden ist. Bei dieser Ausführungsform wird die Standortlizenz durch Hinzufügen eines entsprechenden LicenseKeyStrings und LicenseAgreementStrings zu der API beim Installieren der API angezeigt. Dieses Verfahren wird nachstehend näher beschrieben. Ein entsprechender LicenseAgreementString kann beispielsweise lauten: „API-Standortlizenz ist erteilt. Diese API darf mit einem Anwendungsprogramm an dem Standort verwendet werden, an dem sie installiert ist." Der entsprechende geeignete LicenseKeyString kann beispielsweise durch Verwenden des privaten Schlüssels des API-Verkäufers und eines Digitalsignatur-Verfahrens für den LicenseAgreementString abgeleitet werden.
  • Der Prozess der Kontrolle der Standortlizenz beginnt im Schritt 1004, wo die UNLOCK-Funktion einen LicenseKeyString und einen LicenseAgreementString aus der API lokalisiert und gewinnt (insofern sie für die API bereitgestellt worden sind). Die Steuerung geht dann zum Schritt 1006, wo die Funktion prüft, ob die API nach einer Standortlizenz für unbeschränkte Verwendung mit einem Anwendungsprogramm lizenziert ist. Die Prüfung von Schritt 1006 erfolgt durch Überprüfen der Authentizität des aus der API gewonnenen LicenseKeyStrings und LicenseAgreementStrings, und wenn sie authentisch sind, Feststellen, ob der LicenseAgreementString angibt, dass eine Standortlizenz erteilt worden ist.
  • Die Authentizität des LicenseAgreementStrings und des LicenseKeyStrings wird ermittelt, indem der LicenseAgreementString, der LicenseKeyString und eine Kopie des bei der API-Implementierung gespeicherten öffentlichen Schlüssels des API-Verkäufers dem CHECK-Verfahren 922 unterzogen werden. Das CHECK-Verfahren 922 verwendet ein Digitalsignatur-Authentisierungsverfahren ("DSA"-Verfahren), um die Authentizität des LicenseAgreementStrings zu überprüfen.
  • Das vom CHECK-Verfahren 922 verwendete DSA-Verfahren kann jedes Digitalsignatur-Authentisierungsverfahren sein, das in der Lage ist, einen Eingabe-String und einen Schlüssel, der die digitale Signatur des Eingabe-Strings darstellen soll, zu lesen, ein entsprechendes Authentisierungsverfahren anzuwenden und die Gültigkeit des Eingabe-Strings durch Prüfen, ob der Schlüssel die digitale Signatur des Eingabe-Strings darstellt, festzustellen. Ein exemplarisches DSA-Verfahren ist beispielsweise in der US-Patentanmeldung Nr. 08/484.264 mit dem Titel „Method and Apparatus for Digital Signature Authentication" („Verfahren und Vorrichtung zur Digitalsignatur-Authentisierung"), das an den Abtretungsempfänger des vorliegenden Patents übertragen worden ist und jetzt als US-PS 5.581.616 erteilt ist. Das DSA-Verfahren der RSA Data Security, Inc. kann ebenfalls für die Verwendung mit der Erfindung abgeändert werden. Zur Erhöhung der Durchführungsgeschwindigkeit des CHECK-Verfahrens kann ein Persessions-Cache verwendet werden.
  • Wenn festgestellt wird, dass der LicenseKeyString die gültige digitale API-Verkäufer-Signatur des LicenseAgreementStrings ist, wird der LicenseAgreementString geprüft, um festzustellen, ob er angibt, dass eine Standortlizenz erteilt worden ist. Wenn der LicenseAgreementString dies angibt, ist die Prüfung von Schritt 1006 erfolgreich und die Steuerung geht zum Schritt 1014. An dieser Stelle sendet die UNLOCK-Funktion ein positives Ergebnis an die aufrufende Einheit zurück und erlaubt der aufrufenden Einheit, die API zu verwenden.
  • Wenn die Prüfung von Schritt 1006 keinen Erfolg hat, geht die Steuerung zum Schritt 1008, wo die UNLOCK-Funktion den LicenseKeyString und den LicenseAgreementString aus einem Datensegment (beispielsweise dem kompilierten Konstantendeklarationsbereich) der aufrufenden Einheit gewinnt und liest. Alternativ kann die aufrufende Einheit den LicenseKeyString und den LicenseAgreementString an die API senden. Nach Erhalt des LicenseKeyStrings und LicenseAgreementStrings der aufrufenden Einheit geht die Steuerung zum Schritt 1010, wo die Funktion prüft, ob die aufrufende Einheit für die Verwendung der API lizenziert ist. Diese Prüfung umfasst zwei Teile. Der eine Teil, der das vorstehend beschriebene CHECK-Verfahren 922 verwendet, stellt fest, ob der LicenseAgreementString ein LicenseAgreementString ist, der vom API-Verkäufer berechtigterweise ausgegeben wurde. Ein zweiter Teil prüft den LicenseAgreementString auf die Bedingungen der enthaltenen Lizenz und stellt fest, ob diese Bedingungen erfüllt sind. Wenn das Ergebnis positiv ist, geht die Steuerung zum Schritt 1014. An dieser Stelle wird die Verwendung der API mit der aufrufenden Einheit zugelassen und die API gibt die Steuerung zur aufrufenden Einheit zurück, sodass die aufrufende Einheit mit der normalen Abarbeitung fortfährt.
  • Wenn das Ergebnis negativ ist, erhält die aufrufende Einheit keine Genehmigung zur Verwendung der API und die Steuerung geht zum Schritt 1012. Im Schritt 1012 erzeugt die API eine Fehlermeldung, wie „API ist nicht für die Verwendung mit diesem Anwendungsprogramm lizenziert", und lehnt den Zugriff auf die aufrufende Einheit ab.
  • Die Schritte 1006 und 1010 führen Lizenzprüfungen durch, indem sie die in den 9 und 11 gezeigte CHECK-LICENSE-Funktion 921 aufrufen. Die Verarbeitungsschritte der CHECK-LICENSE-Funktion 921 sind in 11 dargestellt.
  • Der Prozessablauf der CHECK-LICENSE-Funktion beginnt im Schritt 1102. Die Steuerung geht zum Schritt 1104, wo die CHECK-LICENSE-Funktion in Vorbereitung auf den Aufruf der CHECK-Funktion 922 den LicenseKeyString 902, den LicenseAgreementString 904 und eine Kopie des öffentlichen Schlüssels 1106 des API-Verkäufers als Funktionsaufruf-Argumente assembliert. Wie nachstehend näher dargelegt wird, wird der öffentliche Schlüssel 1106 vom API-Verkäufer aufgrund eines geheimen privaten Schlüssels erstellt. Die drei Argumente werden an die CHECK-Funktion 1108 weitergeleitet.
  • Wenn die CHECK-Funktion (die später näher beschrieben wird) einen FAIL- oder Falsch-Zustand zurücksendet, geht die Steuerung zum Schritt 1124 und die CHECK-LICENSE-Funktion sendet selbst einen Falsch-Zustand zurück. Wenn die CHECK-Funktion einen PASS- oder Richtig-Zustand zurücksendet, geht die Steuerung zum Schritt 1112, wo die CHECK-LICENSE-Funktion die Bedingungen der im LicenseAgreementString festgelegten Lizenz prüft. Im Schritt 1114 prüft die CHECK-LICENSE-Funktion, ob der Name der aufrufenden Einheit der Gleiche wie der Name der lizenzierten Einheit ist, die im LicenseAgreementString angegeben ist. Wenn der Name der aufrufenden Einheit fehlerhaft ist, geht die Steuerung zum Schritt 1124, wo eine Falsch-Nachricht an die UNLOCK-Funktion gesendet wird.
  • Wenn der Name der aufrufenden Einheit richtig ist, prüft die CHECK-LICENSE-Funktion im Schritt 1116, ob der LicenseAgreementString ein Ablaufdatum enthält. Ein Ablaufdatum kann vom API-Verkäufer in den LicenseAgreementString eingefügt werden, um einen Ablaufzeitpunkt festzulegen, nach dem die Verwendung der API durch die aufrufende Einheit nicht mehr zugelassen wird. Die CHECK-LICENSE-Funktion kann beispielsweise auf ein Ablauf datum prüfen, indem sie einen Textstring sucht, der ein Ablaufdatum, beispielsweise „Ablaufdatum" oder „Gültig bis", angibt.
  • Wenn die Prüfung von Schritt 1116 positiv ist, geht die Steuerung zum Schritt 1118, wo die CHECK-LICENSE-Funktion prüft, ob das aktuelle Datum, das beispielsweise von einer Computer-Uhr oder einem -Betriebssystem aufrechterhalten wird, größer als das im LicenseAgreementString gefundene Ablaufdatum ist. Wenn die Prüfung von Schritt 1118 bestanden ist, geht die Steuerung zum Schritt 1120. Wenn die Prüfung von Schritt 1118 nicht bestanden ist, sendet die CHECK-LICENSE-Funktion im Block 1124 eine FAIL-Nachricht zurück.
  • Im Schritt 1120 prüft die CHECK-LICENSE-Funktion, ob der LicenseAgreementString weitere Lizenzbedingungen angibt. Wenn es keine weiteren Bedingungen gibt, sendet die CHECK-LICENSE-Funktion im Block 1126 eine PASS-Nachricht zurück. Wenn es weitere Bedingungen gibt, stellt die CHECK-LICENSE-Funktion im Block 1122 fest, ob diese Bedingungen erfüllt sind. Wenn eine der zusätzlichen Bedingungen nicht erfüllt ist, sendet die CHECK-LICENSE-Funktion im Block 1124 eine FAIL-Nachricht zurück. Wenn alle zusätzlichen Bedingungen erfüllt sind, sendet die CHECK-LICENSE-Funktion im Block 1126 eine PASS-Nachricht zurück.
  • Die Funktionsweise der CHECK-Funktion, die von der CHECK-LICENSE-Funktion im Block 1108 aufgerufen wird, ist in 12 dargestellt. Wie in 12 gezeigt, besteht der Zweck der CHECK-Funktion darin, die Authentizität eines Lizenzvertragsstrings zu überprüfen, indem sie überprüft, dass ein entsprechender Lizenzschlüsselstring eine gültige digitale Signatur des Lizenzvertragsstrings darstellt. Die CHECK-Funktion beginnt im Schritt 1202 und empfängt im Schritt 1203 als Eingangssignal einen LicenseKeyString, einen LicenseAgreementString und einen öffentlichen Schlüssel des Verkäufers. Der öffentliche Schlüssel wird vom Betriebsmittelbibliothek-Verkäufer mit einem bekannten Verfahren zur Erzeugung eines öffentlichen/privaten Schlüsselpaars erzeugt, wie es auf dem Gebiet der Kryptographie bekannt ist. Die Schlüsselerzeugung kann beispielsweise durch Schnelle Elliptische Verschlüsselung (Fast E1liptical Encryption; FEE) erfolgen, oder es kann die Diffie-Hellman-Schlüsselerzeugung genutzt werden.
  • Im Schritt 1204 überprüft die CHECK-Funktion, dass der LicenseKeyString die digitale Signatur des LicenseAgreementStrings aufweist. Im Schritt 1208 prüft die CHECK-Funktion, ob die Überprüfung von Schritt 1204 erfolgreich überprüft hat, dass der LicenseKeyString die digitale Signatur des LicenseAgreementStrings aufweist. Wenn ja, ist der LicenseAgreementString gültig und die CHECK-Funktion sendet einen Booleschen wahren oder Richtig-Wert zurück. Wenn nicht, ist der LicenseAgreementString ungültig und die CHECK-Funktion sendet eine Falsch- oder Negativ-Nachricht zurück.
  • Da der LicenseKeyString der vorliegenden Ausführungsform die digitale Signatur des LicenseAgreementStrings aufweist, kann der LicenseAgreementString nicht in irgendeiner Weise geändert werden, ohne dass die Änderung erkannt wird. Da, allgemeiner gesagt, der Identifikator (z. B. der LicenseKeyString) der Erfindung ein eindeutiger Schlüssel ist, der mathematisch von einem bestimmten Textstring abgeleitet wurde, der die Lizenzbedingungen für ein bestimmtes Endbenutzer-Programm (z. B. den LicenseAgreementString) festlegt, kann der Identifikator zum Feststellen von Änderungen an den Lizenzbedingungen verwendet werden. Dadurch wird eine unbefugte Modifikation des Textstrings, von einer Verlängerung der Benutzung einer Betriebsmittelbibliothek bis hin zu einem unlizenzierten Programm, vermieden. Wenn beispielsweise ein Endbenutzer das Ablaufdatum mit einem Debugger oder Maschinenspracheneditor zu ändern versucht, passt der Identifikator nicht mehr mit dem Lizenztextstring zusammen. Ohne den privaten Schlüssel des Verkäufers zu kennen, kann der Endbenutzer keinen passenden Identifikator erzeugen.
  • Wenn ein privater 127-Bit-Schlüssel vom Verkäufer benutzt wird, um den in der vorliegenden Erfindung verwendeten Identifikator zu erzeugen, müsste ein fest entschlossener Hacker, der den privaten Schlüssel zu fälschen versucht, umfassend den 127-Bit-Raum durchsuchen, was umfangreiche Rechen-Betriebsmittel und eine unpraktische Menge Zeit erfordert. Somit kann der Schutz, den die vorliegende Erfindung bietet, nicht ohne weiteres geknackt werden, und die Sicherheit der Erfindung ist insgesamt extrem hoch.
  • Zusätzlich dazu, dass eine Betriebsmittelbibliothek-Lizenzierung für ein Programm möglich ist, wenn der API-Verkäufer oder -Lizenzgeber dem Endbenutzer eine Standortlizenz für die API erteilen will, sodass die API für die Verwendung mit jeder Anzahl von Anwendungsprogrammen lizenziert wird, kann die API auch einen LicenseKeyString und einen LicenseAgreementString erhalten, die diese unbeschränkte Verwendung ermöglichen. Bei dieser Ausführungsform stellt der API-Verkäufer dem Endbenutzer einen Standortlizenzschlüsselstring als Genehmigung, die API mit jeder Anzahl von Anwendungen und anderen Endbenutzer-Programmen an diesem Standort zu benutzen, zur Verfügung. Der Standortlizenzschlüsselstring weist eine digitale Signatur eines vom API-Verkäufer erzeugten Lizenzvertragsstrings auf. Der Lizenzvertragsstring kann vom Verkäufer in die API voreingebettet werden. Beim Installieren der API fragt ein mit der API geliefertes Installationsprogramm den Endbenutzer, ob er den Standortlizenzschlüssel kennt. Wenn ja, gibt der Endbenutzer den Standortlizenzschlüssel ein und das Installationsprogramm schreibt den Standortlizenzschlüssel an eine dafür vorgesehene Stelle in der API. Wenn sich danach die API initialisiert, prüft die API das Vorhandensein des Standortlizenzschlüssels. Wenn er vorhanden ist und eine gültige digitale Signatur für den an anderer Stelle in der API gespeicherten Standortlizenztextstring aufweist, darf die API mit jedem Anwendungsprogramm, das sie gerade aufruft, verwendet werden.
  • OpenStep-API
  • Bei einer Ausführungsform der Erfindung ist die verwendete API die in 8 gezeigte objektorientierte OpenStep-API 820. Eine Beschreibung der OpenStep-API ist von NeXT Software, Inc. unter dem Titel „OpenStep Specification" („OpenStep-Beschreibung") am 18.10.1994 herausgegeben worden. Zu den Implementierungen der OpenStep-API gehören Implementierungen für die Betriebssysteme Windows NT und Solaris, die von NeXT Software, Inc. bzw. SunSoft, Inc. bezogen werden können.
  • Wie in 8 gezeigt, weist die OpenStep-API 820 einen Programmcode auf, der als Application Kit 802, Foundation Kit 808 und Display-PostscriptTM-System 804 organisiert ist. (Display PostscriptTM ist ein Warenzeichen von Adobe Systems Incorporated.) Das Application Kit 802 stellt grundlegende Betriebsmittel für interaktive Anwendungsprogramme bereit, die Windows nutzen, auf dem Bildschirm zeichnen und auf Benutzer-Aktionen an der Tastatur und Maus reagieren. Das Application Kit 802 enthält Komponenten, die die Benutzeroberfläche definieren. Diese Komponenten umfassen Klassen, Protokolle, Funktionen der Sprache C, Konstanten und Daten-Arten, die von praktisch jeder Anwendung, die unter OpenStep-API läuft, verwendet werden sollen. Ein Hauptzweck des Application Kits 802 besteht darin, einen Rahmen zur Implementierung einer grafischen ereignisgesteuerten Anwendung bereitzustellen.
  • Das Foundation Kit 808 stellt wesentliche Software-Funktionen oder Baueinheiten bereit, die Anwendungsprogramme verwenden, um Daten und Betriebsmittel zu verwalten. Das Foundation Kit 808 definiert grundlegende Hilfsprogrammklassen und -dienstmerkmale zur Verarbeitung von Mehrbyte-Zeichensätzen, Objekt-Beständigkeit und -Verteilung und stellt eine Schnittstelle zu normalen Betriebssystem-Einrichtungen bereit. Das Foundation Kit 808 bietet somit ein Maß an Betriebssystem-Unabhängigkeit, sodass der Entwickler ein Anwendungsprogramm besser von einem Betriebssystem zu einem anderen portieren kann.
  • Das Display-Postscript-System 804 ist ein Geräte-unabhängiges Abbildungsmodell zum Anzeigen von Dokumenten auf einem Bildschirm. Display Postscript ist von Adobe Systems Incorporated definiert. Das Display-Postscript-System 804 ist eine Anwendungs-unabhängige Schnittstelle zu Postscript.
  • Getrennt von der API 820, aber ebenfalls logisch zwischen dem Anwendungsprogramm 800 und dem Betriebssystem 810 lokalisiert, ist eine Gruppe von Geräte-abhängigen Fenstertechnik-Erweiterungen 806. Die Erweiterungen 806 aktivieren das Display-Postscript-System 804, um mit spezieller Grafik- und Bildschirm-Hardware im Computersystem des Endbenutzers, wie etwa Bildschirmspeicher- oder anderer Bildschirm- Hardware, zu kommunizieren.
  • 13 zeigt eine Ausführungsform der Erfindung, die mit der OpenStep-API von 8 verwendet wird. Wie in 13 gezeigt, werden bei dieser Ausführungsform der Lizenztextstring und der Lizenzschlüsselstring der Erfindung in einem Eigenschaftslistenbereich 1302 (Info.plist) des Anwendungsprogrammcodes 800 implementiert. Es werden zwei String-Eigenschaften zum Eigenschaftslistenbereich 1302 hinzugefügt: NSLicenseAgreement 1304, der die für das Anwendungsprogramm 800 geltenden Softwarelizenzbedingungen speichert, und NSLicenseKey 1306, der den Lizenzschlüssel, der dem NSLicenseAgreement 1304 entspricht, speichert. Bei dieser Ausführungsform wird wie bei der Ausführungsform von 9 der NSLicenseKey 1306 vom NSLicenseAgreement-String 1304 abgeleitet, der mit einem Digitalsignatur-Verfahren und einem privaten Schlüssel des Verkäufers aus dem Lizenzvertrag-String erzeugt wird.
  • Beispielwerte der beiden in die Info.plist eingefügten Strings sind in Tabelle 2 angegeben.
  • Tabelle 2: Info.plist-Strings
    Figure 00250001
    Bei der OpenStep-Ausführungsform von 13 ist die UNLOCK-Funktion 1308 als Teil des Application Kits 802 implementiert. Bei einer Ausführungsform wird die UNLOCK-Funktion 1308 durch Hinzufügen eines entsprechenden Codes zu einer nicht neudefinierbaren privaten Application-Kit-Funktion (beispielsweise _NXAppZone() in NSApplication.m) implementiert. Ein Beispiel für den Quellcode, der hinzugefügt werden kann, ist in Tabelle 3 angegeben.
  • Tabelle 3: Bei der OpenStep-API-Implementierung hinzugefügter UNLOCK-Code
    Figure 00250002
    Die NSCheckLicense()-Funktion 1310, die in dem Code-Segment von Tabelle 3 zweimal aufgerufen wird, ist, wie in 13 gezeigt, im Foundation-Kit-Teil 808 der OpenStep-API 820 implementiert. Die NSCheckLicense()-Funktion 1310 entspricht der CHECK-LICENSE-Funktion 921, die in 9 dargestellt ist. Die NSCheckLicense()-Funktion 1310 überprüft den NSLicenseAgreement-String 1304 mit dem NSLicenseKey-String 1306 und einem Digitalsignatur-Authentisierungsverfahren. Die NSCheckLicense()-Funktion 1310 hat folgende Definition:
    Extern BOOL NSCheckLicense(NSString *licenseKey, NSString *licenseAgreement);
    Wie die CHECK-LICENSE-Funktion 921 von 9 verwendet die NSCheckLicense()-Funktion 1310 mit Hilfe des öffentlichen Schlüssels des API-Verkäufers eine CHECK-Funktion 1312 für den NSLicenseAgreement-String 1304 und den NSLicenseKey 1306, um die Gültigkeit des NSLicenseAgreement-Strings 1304 festzustellen. Bei der Ausführungsform von 13 enthält die CHECK-Funktion 1312 in ihrem Code eine Kopie des öffentlichen Schlüssels (Public Key) des API-Verkäufers 1314.
  • Bei der Ausführungsform von 13 weist die API 820 ein „GEN"-Verfahren 1316 auf, mit dem ein API-Verkäufer Lizenzschlüsselstrings zur Verwendung durch die CHECK-Funktion 1312 schnell erzeugen kann. Bei dem GEN-Verfahren 1316 werden als Eingangssignale ein Lizenzvertragsstring und ein geheimer privater Schlüssel empfangen und als Ausgangssignal wird mit einem Digitalsignatur-Erzeugungsverfahren ein Lizenzschlüsselstring erzeugt. Der private Schlüssel kann beispielsweise ein privater 127-Bit-Schlüssel sein, obwohl auch ein privater Schlüssel einer anderen Größe verwendet werden kann. Das vom GEN-Verfahren 1316 genutzte Signatur-Erzeugungsverfahren ist mit dem von der CHECK-Funktion 1312 genutzten Digitalsignatur-Authentisierungsverfahren kompatibel. Das GEN-Verfahren 1316 selbst kann völlig öffentlich gemacht werden und in der API implementiert werden, wenn der private Schlüssel des API-Verkäufers geheimgehalten wird. Beispielsweise kann das GEN-Verfahren Teil des in 13 gezeigten OpenStep-API-Foundation-Kits 808 sein. Das GEN-Verfahren kann auch in einem gesonderten Programmmodul gehalten werden.
  • Die logische Beziehung zwischen dem GEN-Verfahren und der CHECK-Funktion lautet:
    CHECK(GEN(LicenseAgreementString, PrivateKey), Public Key, LicenseAgreementString) ⇒ YES
    CHECK(random1, random2) ⇒ NO with a very high probability Bei einer Ausführungsform der Erfindung wird eine Shell für das GEN-Verfahren bereitgestellt. Die Shell kann als Eingangssignal einen Lizenzvertrag-Dokumentvorlagenstring empfangen, wie
    © Urheberrecht 1995, %@, Lizenzvertrag vom %@; Demo-Software gültig bis %@; Es ist rechtlich unzulässig, diesen Vertrag zu kopieren
    wobei %@ das zusätzliche Datum ist, das vom API-Verkäufer zu liefern ist. Die Shell fordert dann den Benutzer (d. h. den API-Verkäufer) auf, die zusätzlichen Daten, beispielsweise einen Firmennamen, einen Produktnamen und ein Ablaufdatum, aus denen die Shell einen speziellen Lizenzvertragsstring erzeugt, einzugeben. Die Shell fragt dann nach dem privaten Schlüssel und erzeugt mit dem GEN-Verfahren einen entsprechenden Lizenzschlüssel.
  • Diese Shell kann mit anderen Dokumentvorlagen auch für Lizenzschlüssel für ein Programm oder Lizenzschlüssel für einen Standort verwendet werden.
  • Bei einer Ausführungsform der Erfindung wird ein Installationsprogramm zum Installieren einer Betriebsmittelbibliothek auf dem Endbenutzer-Computer bereitgestellt. Das Installationsprogramm hat eine Programmfunktion, mit der der Endbenutzer während der Installation einen Standortlizenzschlüssel bereitstellen kann. Wenn beispielsweise die Betriebsmittelbibliothek die OpenStep-API ist, wird ein zusätzlicher Code zum OpenStep-API-Installationsprogramm hinzugefügt. Der Benutzer wird beim Installieren der Betriebsmittelbibliothek gefragt, ob er eine Lizenz für einen Standort erhalten hat. Wenn der Benutzer mit Ja antwortet, wird er aufgefordert, den Standortlizenzschlüsselstring einzugeben. Bei einer Ausführungsform wird der Benutzer auch aufgefordert, den Standort-Lizenzvertragsstring einzugeben. Bei einer anderen Ausführungsform wird der Standort-Lizenzvertragsstring in der Betriebsmittelbibliothek gespeichert, beispielsweise in der Betriebsmitteldatei Info.plist des Application Kits der DLL der OpenStep-API. Die Gültigkeit des Standortlizenzschlüssels und des Standortlizenzvertrags wird, wie vorstehend beschrieben, mit der CHECK-LICENSE-Funktion überprüft. Die Benutzung der Betriebsmittelbibliothek wird nur dann erlaubt, wenn der vom Benutzer eingegebene Standortlizenzschlüsselstring dem Standortlizenzvertrags string entspricht (d. h. wenn festgestellt wird, dass er die digitale Betriebsmittelbibliothek-Verkäufer-Signatur des Standortlizenzvertragsstrings aufweist).
  • Java
  • Die vorliegende Erfindung kann mit Betriebsmittelbibliotheken, wie Java-Klassendateien, Java-Applets und Java-Bytecode-Paketen, verwendet werden. 14 zeigt eine Ausführungsform der Erfindung, bei der die Betriebsmittelbibliothek ein Java-Applet ist. Bei der in 14 gezeigten Ausführungsform wird ein Applet von einer HTML-Seite 1402 über ein Applet-Tag 1404 aufgerufen. Das Applet-Tag 1404 weist den Namen der Klassendatei des Applets und Applet-Parameter 1406 auf. Die Applet-Parameter 1406 umfassen einen Lizenzvertragsstring-Parameter 1408 und einen Lizenzschlüsselstring-Parameter 1410. Der Lizenzvertragsstring-Parameter 1408 gibt einen Lizenzvertragsstring an, der Bedingungen einer Lizenz für die Verwendung des angeforderten Applets enthält. Der Lizenzschlüsselstring-Parameter 1410 gibt einen Lizenzschlüssel an, der zur Authentisierung des Lizenzvertragsstrings verwendet wird. Wie bei anderen Ausführungsformen der Erfindung weist bei dieser Ausführungsform der Lizenzschlüsselstring eine digitale Signatur des Betriebsmittelbibliothek-(Applet)Verkäufers des Lizenzvertragsstrings auf. Tabelle 4 zeigt ein Beispiel für das Applet-Tag 1404.
  • Tabelle 4
    Figure 00280001
  • In dem Beispiel von Tabelle 4 gibt der Lizenzvertragsstring den Namen der HTML-Seite („orderform-html") und den Namen des lizenzierten Applets („applet.class") an.
  • Wie in 14 gezeigt, wird auf das Applet 1434 zugegriffen, wenn die HTML-Seite 1402 von einem HTML-Browser 1430 geladen wird, der auf einem Client-Computer 1420 läuft. Bei der Ausführungsform von 13 läuft der HTML-Browser 1430 auf einer API 1424, die wiederum auf einem Betriebssystem 1422 läuft. Der HTML-Browser 1430 weist eine virtuelle Java-Maschine 1432 zum Abarbeiten von Java-Applets auf.
  • Wenn der HTML-Browser 1430 beim Laden der HTML-Seite 1402 auf ein Applet-Tag 1404 stößt, ruft er die den Applet 1434 bildenden Klassendateien aus den Speicherzellen im Client-Computer 1420 und/oder gegebenenfalls aus einem oder mehr Server-Computern ab. Eine der Klassendateien ist die CheckLicense-Klassendatei 1436. Nachdem der HTML-Browser 1430 alle erforderlichen Komponenten des Applets 1434 abgerufen hat, wird das Applet 1434 initialisiert. Während der Initialisierung oder zu einem späteren Zeitpunkt wird die von der CheckLicense-Klassendatei 1436 bereitgestellte CheckLicense-Funktion aufgerufen. Wie bei anderen Ausführungsformen stellt die CheckLicense-Funktion fest, ob die anfordernde Einheit (HTML-Seite 1402) eine gültige Lizenz zur Verwendung des angeforderten Betriebsmittels (Applet 1434) besitzt, indem sie mit dem vom LicenseKeyString-Parameter 1410 festgelegten Lizenzschlüssel und dem öffentlichen Schlüssel des Applet-Verkäufers 1438 die Authentizität der vom LicenseAgreementString-Parameter 1408 festgelegten Lizenz prüft. Wenn die CheckLicense-Funktion feststellt, dass die HTML-Seite 1402 eine gültige Lizenz besitzt, darf das Applet 1434 abgearbeitet werden. Wenn nicht, wird die Abarbeitung des Applets 1434 beendet und eine Fehlermeldung wird an den HTML-Browser 1430 gesendet.
  • Somit ist ein verbessertes Verfahren und eine verbesserte Vorrichtung zur Erzwingung von Software-Lizenzen vorgestellt worden. Obwohl die vorliegende Erfindung in Bezug auf bestimmte exemplarische Ausführungsformen beschrieben worden ist, dürften Fachleute erkennen, dass die vorliegende Erfindung nicht auf diese speziellen Ausführungsformen beschränkt ist. Obwohl die Erfindung beispielsweise für die Verwendung in Einzelplatzrechnersystemen beschrieben worden ist, kann die Erfindung auch zur Erzwingung von Lizenzen in einer Netzwerk-Umgebung verwendet werden. Und obwohl die Funktionsweise von bestimmten Ausführungsformen unter Verwendung bestimmter Software-Programme und bestimmter detaillierter Prozessschritte detailliert beschrieben worden ist, kann andere Software verwendet werden und einige der Schritte können weggelassen werden oder andere ähnliche Schritte können ersetzt werden, ohne vom Schutzumfang der Erfindung abzuweichen. Fachleute werden weitere Ausführungsformen erkennen, die die Erfindungsmerkmale der vorliegenden Erfindung aufweisen.

Claims (79)

  1. Vorrichtung zum Begrenzen einer Nutzung eines Software-Betriebsmittels (215) in einer Computer-Betriebsumgebung mit einem Softwareprogramm und dem Software-Betriebsmittel (215), mit: – einem Zugriff-Autorisierungsanzeiger (500), der mit dem Softwareprogramm in Verbindung steht; –- Mittel zum Lesen des Zugriff-Autorisierungsanzeigers in dem Software-Betriebsmittel (215); – Mittel in dem Software-Betriebsmittel (215) zum Bestimmen, ob der Zugriff-Autorisierungsanzeiger (500) gültig ist; und – Mittel zum Erlauben eines Zugriffs mit Hilfe des Softwareprogramms auf das Software-Betriebsmittel (215), nur für den Fall, daß bestimmt wird, daß der Zugriff-Autorisierungsanzeiger (500) gültig ist; dadurch gekennzeichnet, daß der Zugriff-Autorisierungsanzeiger (500) wenigstens eine Lizenzbestimmung zur Nutzung der Software und einen Lizenzschlüssel (610) umfaßt, der der wenigstens einen Lizenzbestimmung zur Nutzung der Software entspricht.
  2. Vorrichtung nach Anspruch 1, wobei der Zugriff-Autorisierungsanzeiger (500) Ber wenigstens einen Lizenzbestimmung zur Nutzung der Software entstimmungen einer Standortlizenz umfaßt.
  3. Vorrichtung nach Anspruch 1, wobei der Zugriff-Autorsierungsanzeiger (500) in das Softwareprogramm eingebettet ist.
  4. Vorrichtung nach Anspruch 1, wobei das Software-Betriebsmittel (215) eine API ("application program interface" – Anwendungsprogrammschnittstelle) aufweist.
  5. Vorrichtung nach Anspruch 1, wobei das Software-Betriebsmittel (215) eine Laufzeit-Bibliothek umfaßt.
  6. Vorrichtung nach Anspruch 1, wobei das Software-Betriebsmittel (215) eine dynamische Verknüpfungsbibliothek umfaßt.
  7. Vorrichtung nach Anspruch 1, wobei das Software-Betriebsmittel (215) ein Applet umfaßt.
  8. Vorrichtung nach Anspruch 1, wobei das Software-Betriebsmittel (215) ein Bytecode-Paket umfaßt.
  9. Vorrichtung nach Anspruch 1, wobei das Software-Betriebsmittel (215) ein OLE ("object linking and embedding" – Objektverknüpfung und -einbettung ) aktiviertes Anwendungsprogramm umfaßt.
  10. Vorrichtung nach Anspruch 3, wobei der Zugriff-Autorisierungsanzeiger (500) in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert ist.
  11. Vorrichtung nach Anspruch 3, wobei der Zugriff-Autorisierungsanzeiger (500) ein Eigentum an einer Eigentumsliste des Softwareprogramms umfaßt.
  12. Vorrichtung nach Anspruch 1, wobei der Lizenzschlüssel (610) ein mit dem Zugriff-Autorisierungsanzeiger verbundener Identifizierer ist und wobei die Mittel zum Bestimmen der Gültigkeit des Zugriff-Autorisierungsanzeigers (500) Mittel umfassen, um zu bestimmen, ob der Zugriff-Autorisierungsanzeiger (500) auf Basis des Identifizierers gültig ist.
  13. Vorrichtung nach Anspruch 12, gekennzeichnet durch Mittel zum Empfangen des Identifizierers von einem Endnutzer.
  14. Vorrichtung nach Anspruch 13, gekennzeichnet durch Mittel zum Speichern des Identifizierers in dem Software-Betriebsmittel (215).
  15. Vorrichtung nach Anspruch 12, wobei der Identifizierer in das Softwareprogramm eingebettet ist.
  16. Vorrichtung nach Anspruch 12, wobei der Identifizierer eine digitale Signatur des Zugriff-Autorisierungsanzeigers (500) umfaßt.
  17. Vorrichtung nach Anspruch 15, wobei der Identifizierer in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert ist.
  18. Vorrichtung nach Anspruch 15, wobei der Identifizierer ein Eigentum an einer Eigentumsliste des Softwareprogramms umfaßt.
  19. Vorrichtung nach Anspruch 16, wobei die Mittel zum Bestimmen, ob der Zugriff-Autorisierungsanzeiger (500) auf Basis des Identifizierers gültig ist, Mittel für eine digitale Signaturbeglaubigung umfassen.
  20. Vorrichtung nach Anspruch 1, gekennzeichnet durch Mittel zum Bestimmen, ob die wenigstens eine Lizenzbestimmung zutrifft.
  21. Vorrichtung nach Anspruch 16, wobei das Softwareprogramm den Zugriff-Autorisierungsanzeiger (500) und den Identifizierer umfaßt.
  22. Verfahren zum Begrenzen einer Nutzung eines Software-Betriebsmittels (215) in einer Computer-Betriebsumgebung (100, 110, 220), wobei das Verfahren die folgenden Schritte umfaßt: – Empfangen einer Anforderung eines Softwareprogramms zum Nutzen des Betriebsmittels (215); – Erhalten eines Zugriff-Autorisierungsanzeigers (500), der mit dem Softwareprogramm in Verbindung steht, wobei der Zugriff-Autorisierungsanzeiger (500) wenigstens eine Lizenzbestimmung zur Nutzung des Software-Betriebsmittels umfaßt; – Erhalten eines Lizenzschlüssels (610), der der wenigstens einen Lizenzbestimmung für die Nutzung der Software entspricht; – Bestimmen, ob der Zugriff-Autorisierungsanzeiger (500) gültig ist; und – Erlauben einer Nutzung des Software-Betriebsmittels (215) durch das Softwareprogramm, nur wenn bestimmt wird, daß der Zugriff-Autorisierungsanzeiger (500) gültig ist.
  23. Verfahren nach Anspruch 22, wobei die wenigstens eine Lizenzbestimmung eine Standortlizenz umfaßt.
  24. Verfahren nach Anspruch 22, wobei der Zugriff-Autorisierungsanzeiger (500) in das Softwareprogramm eingebettet ist.
  25. Verfahren nach Anspruch 22, wobei das Software-Betriebsmittel (215) eine API ("application program interface" – Anwendungsprogrammschnittstelle) umfaßt.
  26. Verfahren nach Anspruch 22, wobei das Software-Betriebsmittel (215) eine Laufzeit-Bibliothek umfaßt.
  27. Verfahren nach Anspruch 22, wobei das Software-Betriebsmittel (215) eine dynamische Verknüpfungsbibliothek umfaßt.
  28. Verfahren nach Anspruch 22, wobei das Software-Betriebsmittel (215) ein Applet umfaßt.
  29. Verfahren nach Anspruch 22, wobei das Software-Betriebsmittel (215) ein Bytecode-Paket umfaßt.
  30. Verfahren nach Anspruch 22, wobei das Software-Betriebsmittel (215) ein OLE ("object linking and embedding" – Objektverknüpfung und -einbettung) aktiviertes Anwendungsprogramm umfaßt.
  31. Verfahren nach Anspruch 24, wobei der Zugriff-Autorisierungsanzeiger (500) in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert ist.
  32. Verfahren nach Anspruch 24, wobei der Zugriff-Autorisierungsanzeiger (500) ein Eigentum an einem Eigentumslistenbereich des Softwareprogramms umfaßt.
  33. Verfahren nach Anspruch 22, wobei der Lizenzschlüssel (610) ein mit dem Zugriff-Autorisierungsanzeiger (500) in Verbindung stehender Identifizierer ist und wobei bei dem Bestimmen der Gültigkeit des Zugriff-Autorisierungsanzeigers (500) bestimmt wird, ob der Zugriff-Autorisierungsanzeiger (500) auf Basis des Identifizierers gültig ist, welcher mit dem Zugriff-Autorisierungsanzeiger (500) verbunden ist.
  34. Verfahren nach Anspruch 33, gekennzeichnet durch das Akzeptieren des Identifizierers von einem Nutzer.
  35. Verfahren nach Anspruch 34, gekennzeichnet durch das Speichern des Identifizierers in dem Software-Betriebsmittel.
  36. Verfahren nach Anspruch 33, wobei der Identifizierer in das Softwareprogramm eingebettet ist.
  37. Verfahren nach Anspruch 33, wobei der Identifizierer eine digitale Signatur des Zugriff-Autorisierungsanzeigers umfaßt.
  38. Verfahren nach Anspruch 36, wobei der Identifizierer in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert wird.
  39. Verfahren nach Anspruch 36, wobei der Identifizierer ein Eigentum an einem Eigentumslistenbereich des Softwareprogramms umfaßt.
  40. Verfahren nach Anspruch 33, wobei Beglaubigungsmittel für eine digitale Signatur genutzt werden, um zu bestimmen, ob der Zugriff-Autorisierungsanzeiger auf Basis des Identifizierers gültig ist.
  41. Verfahren nach Anspruch 22, wobei bestimmt wird, ob die wenigstens eine Lizenzbestimmung übereinstimmt.
  42. Verfahren nach Anspruch 37, wobei das Softwareprogramm den Zugriff-Autorisierungsanzeiger (500) und den Identifizierer umfaßt.
  43. Programmspeichereinrichtung, die mit Hilfe einer Maschine lesbar ist und auf der ein Programm mit von der Maschine ausführbaren Instruktionen verständlich ausgeführt ist, um ein Verfahren zum Begrenzen einer Nutzung eines Software-Betriebsmittels (215) auszuführen, wobei das Verfahren die folgenden Schritte umfaßt: – Empfangen einer Anforderung eines Softwareprogramms zum Nutzen des Betriebsmittels (215); –Erhalten eines Zugriff-Autorisierungsanzeigers (500), der mit dem Softwareprogramm in Verbindung steht, wobei der Zugriff-Autorisierungsanzeiger (500) wenigstens eine Lizenzausbestimmung zur Nutzung des Software-Betriebsmittels (215) umfaßt; – Erhalten eines Lizenzschlüssels (610), der der wenigstens einen Lizenzbestimmung für die Nutzung der Software entspricht; – Bestimmen, ob der Zugriff-Autorisierungsanzeiger (500) gültig ist; und –Erlauben einer Nutzung des Software-Betriebsmittels (215) durch das Softwareprogramm, nur wenn bestimmt wird, daß der Zugriff-Autorisierungsanzeiger (500) gültig ist.
  44. Programmspeichereinrichtung nach Anspruch 43, wobei die wenigstens eine Lizenzbestimmung eine Standortlizenz umfaßt.
  45. Programmspeichereinrichtung nach Anspruch 43, wobei der Zugriff-Autorisierungsanzeiger (500) in das Softwareprogramm eingebettet ist.
  46. Programmspeichereinrichtung nach Anspruch 43, wobei das Software-Betriebsmittel (215) ein API (" application program interface" – Anwendungsprogrammschnittstelle) umfaßt.
  47. Programmspeichereinrichtung nach Anspruch 43, wobei das Software-Betriebsmittel (215) eine Laufzeit-Bibliothek umfaßt.
  48. Programmspeichereinrichtung nach Anspruch 43, wobei das Software-Betriebsmittel (215) eine dynamische Verknüpfungsbibliothek umfaßt.
  49. Programmspeichereinrichtung nach Anspruch 43, wobei das Software-Betriebsmittel (215) ein Applet umfaßt.
  50. Programmspeichereinrichtung nach Anspruch 43, wobei das Software-Betriebsmittel ein Bytecode-Paket umfaßt.
  51. Programmspeichereinrichtung nach Anspruch 43, wobei das Software-Betriebsmittel (215) ein OLE ("object linking and embedding" – Objektverknüpfung und -einbettung) aktiviertes Anwendungsprogramm umfaßt.
  52. Programmspeichereinrichtung nach Anspruch 45, wobei der Zugriff-Autorisierungsanzeiger (500) in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert ist.
  53. Programmspeichereinrichtung nach Anspruch 45, wobei der Zugriff-Autorisierungsanzeiger (500) ein Eigentum an einem Eigentumslistenbereich des Softwareprogramms umfaßt.
  54. Programmspeichereinrichtung nach Anspruch 43, wobei der Lizenzschlüssel (610) ein mit dem Zugriff-Autorisierungsanzeiger (500) verbundener Identifizierer ist und wobei beim Bestimmen der Gültigkeit des Zugriff-Autorisierungsanzeigers (500) be- stimmt wird, ob der Zugriff-Autorisierungsanzeiger (500) auf Basis des Identifizierers gültig ist, welcher mit dem Zugriff-Autorisierungsanzeiger (500) verbunden ist.
  55. Programmspeichereinrichtung nach Anspruch 54, wobei das Verfahren des Akzeptieren des Identifizierers von einem Nutzer umfaßt.
  56. Programmspeichereinrichtung nach Anspruch 55, wobei das Verfahren das Speichern des Identifizierers in dem Software-Betriebsmittel (215) umfaßt.
  57. Programmspeichereinrichtung nach Anspruch 54, wobei der Identifizierer in das Softwareprogramm eingebettet ist.
  58. Programmspeichereinrichtung nach Anspruch 54, wobei der Identifizierer eine digitale Signatur des Zugriff-Autorisierungsanzeigers (500) umfaßt.
  59. Programmspeichereinrichtung nach Anspruch 57, wobei der Identifizierer in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert wird.
  60. Programmspeichereinrichtung nach Anspruch 57, wobei der Identifizierer ein Eigentum an einem Eigentumslistenbereich des Softwareprogramms umfaßt.
  61. Programmspeichereinrichtung nach Anspruch 54, wobei Beglaubigungsmittel für eine digitales Signatur benutzt werden, um zu bestimmen, ob der Zugriff-Autorisierungsanzeiger (500) auf Basis des Identifizierers gültig ist.
  62. Programmspeichereinrichtung nach Anspruch 43, wobei bestimmt wird, ob die wenigstens eine Lizenzbestimmung übereinstimmt.
  63. Programmspeichereinrichtung nach Anspruch 58, wobei das Softwareprogramm den Zugriff-Autorisierungsanzeiger (500) und den Identifizierer umfaßt.
  64. Herstellungsartikel mit: einem computerlesbaren Medium mit einem computerlesbaren Programmcode, der hierauf ausgeführt ist, um einem Softwareprogramm einen Zugriff auf ein Software-Betriebsmittel zu erlauben, wobei der computerlesbare Programmcode in dem Herstellungsartikel die folgenden Merkmale aufweist: – computerlesbarer Programmcode, der ein Softwareprogramm verkörpert; und – computerlesbarer Programmcode, der einen Zugriff-Autorisierungsanzeiger (500) verkörpert; dadurch gekennzeichnet, daß der Zugriff-Autorisierungsanzeiger (500) wenigstens eine Lizenzbestimmung für eine Nutzung des Software-Betriebsmittels (215) und einen Lizenzschlüssel (610) umfaßt, welcher der wenigstens einen Lizenzbestimmung zur Nutzung der Software entspricht.
  65. Herstellungsartikel nach Anspruch 64, wobei der computerlesbare Programmcode ein Softwareprogramm umfaßt und wobei der Zugriff-Autorisierungsanzeiger (500) in das Softwareprogramm eingebettet ist.
  66. Herstellungsartikel nach Anspruch 64, wobei das Software-Betriebsmittel (215) ein API („application program Interface" – Anwendungsprogrammschnittstelle) umfaßt.
  67. Herstellungsartikel nach Anspruch 64, wobei das Software-Betriebsmittel eine Laufzeit-Bibliothek umfaßt.
  68. Herstellungsartikel nach Anspruch 64, wobei das Software-Betriebsmittel (215) eine dynamische Verknüpfungsbibliothek umfaßt.
  69. Herstellungsartikel nach Anspruch 64, wobei das Software-Betriebsmittel (215) ein Applet umfaßt.
  70. Herstellungsartikel nach Anspruch 64, wobei das Software-Betriebsmittel (215) ein Bytecode-Paket umfaßt.
  71. Herstellungsartikel nach Anspruch 64, wobei das Software-Betriebsmittel (215) ein OLE („object linking and embedding" – Objektverknüpfung und -einbettung) aktiviertes Anwendungsprogramm umfaßt.
  72. Herstellungsartikel nach Anspruch 65, wobei der Zugriff-Autorisierungsanzeiger (500) in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert ist.
  73. Herstellungsartikel nach Anspruch 65, wobei der Zugriff-Autorisierungsanzeiger (500) ein Eigentum an einer Eigentumsliste des Softwareprogramms umfaßt.
  74. Herstellungsartikel nach Anspruch 64, wobei der Lizenzschlüssel (610) ein mit dem Zugriff-Autorisierungsanzeiger (500) verbundener Identifizierer ist und wobei der Herstellungsartikel computerlesbaren Programmcode umfaßt, der den mit dem Zugriff-Autorisierungsanzeiger (500) verbundenen Identifizierer verkörpert.
  75. Herstellungsartikel nach Anspruch 74, wobei der Identifizierer in das Softwareprogramm eingebettet ist.
  76. Herstellungsartikel nach Anspruch 74, wobei der Identifizierer eine digitale Signatur des Zugriff-Autorisierungsanzeigers (500) umfaßt.
  77. Herstellungsartikel nach Anspruch 74, wobei der Identifizierer in einem Vereinbarungsbereich für Konstanten des Softwareprogramms spezifiziert ist.
  78. Herstellungsartikel nach Anspruch 74, wobei der Identifizierer ein Eigentum an einer Eigentumsliste des Softwareprogramms umfaßt.
  79. Herstellungsartikel nach Anspruch 76, wobei das Softwareprogramm den Zugriff-Autorisierungsanzeiger (500) und den Identifizierer umfaßt.
DE69812139T 1997-07-28 1998-07-24 Verfahren und vorrichtung zur software-lizenz-erzwingung Expired - Lifetime DE69812139T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/901,776 US6188995B1 (en) 1997-07-28 1997-07-28 Method and apparatus for enforcing software licenses
US901776 1997-07-28
PCT/US1998/015340 WO1999005600A2 (en) 1997-07-28 1998-07-24 Method and apparatus for enforcing software licenses

Publications (2)

Publication Number Publication Date
DE69812139D1 DE69812139D1 (de) 2003-04-17
DE69812139T2 true DE69812139T2 (de) 2004-01-08

Family

ID=25414796

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69812139T Expired - Lifetime DE69812139T2 (de) 1997-07-28 1998-07-24 Verfahren und vorrichtung zur software-lizenz-erzwingung

Country Status (5)

Country Link
US (4) US6188995B1 (de)
EP (1) EP1023664B1 (de)
CA (1) CA2298516A1 (de)
DE (1) DE69812139T2 (de)
WO (1) WO1999005600A2 (de)

Families Citing this family (158)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
WO1999013641A1 (en) * 1997-09-05 1999-03-18 Prevue International, Inc. Program guide application interface system
US7171662B1 (en) * 1998-03-18 2007-01-30 Microsoft Corporation System and method for software licensing
US6374357B1 (en) * 1998-04-16 2002-04-16 Microsoft Corporation System and method for regulating a network service provider's ability to host distributed applications in a distributed processing environment
JPH11313105A (ja) * 1998-04-24 1999-11-09 Canon Inc サーバ、クライアント、サーバの制御方法、クライアントの制御方法、クライアントサーバシステムおよび記憶媒体
AR019458A1 (es) * 1998-07-23 2002-02-20 United Video Properties Inc Una disposicion de guia de programacion televisiva interactiva que sirve como entrada
JP4545317B2 (ja) * 1998-10-28 2010-09-15 ヤフー! インコーポレイテッド インターネットブラウザインターフェースの制御方法、及び制御可能なブラウザインターフェイス
US8214295B2 (en) * 1999-02-05 2012-07-03 Icopyright, Inc. Internet system for facilitating human user advisement and licensing of copyrighted works of authorship
US7103574B1 (en) * 1999-03-27 2006-09-05 Microsoft Corporation Enforcement architecture and method for digital rights management
US7028298B1 (en) * 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
JP2001092721A (ja) * 1999-09-17 2001-04-06 Fujitsu Ltd コンテンツ利用制御装置、コンテンツ利用制御システムおよびコンテンツ利用制御プログラムを記録したコンピュータ読み取り可能な記録媒体
US20080082446A1 (en) * 1999-10-01 2008-04-03 Hicks Christian B Remote Authorization for Unlocking Electronic Data System and Method
US20020186249A1 (en) 1999-10-28 2002-12-12 Qi Lu Method and system of facilitating automatic login to a web site using an internet browser
US20020186255A1 (en) * 1999-10-28 2002-12-12 Shafron Thomas Joshua Method and system of facilitating on-line shopping using an internet browser
US7185333B1 (en) 1999-10-28 2007-02-27 Yahoo! Inc. Method and system for managing the resources of a toolbar application program
US20050177850A1 (en) * 1999-10-29 2005-08-11 United Video Properties, Inc. Interactive television system with programming-related links
US6681242B1 (en) * 2000-01-10 2004-01-20 Sun Microsystems, Inc. Method and apparatus for detecting dependency cycles between resources in a computer system
US7155490B1 (en) * 2000-03-01 2006-12-26 Freewebs Corporation System and method for providing a web-based operating system
AUPQ654400A0 (en) * 2000-03-28 2000-04-20 Optimiser Pty Ltd Authorising use of a computer program
US6678825B1 (en) 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6760441B1 (en) * 2000-03-31 2004-07-06 Intel Corporation Generating a key hieararchy for use in an isolated execution environment
US6633963B1 (en) 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US6795905B1 (en) 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US6901386B1 (en) * 2000-03-31 2005-05-31 Intel Corporation Electronic asset lending library method and apparatus
WO2001093141A1 (fr) * 2000-06-01 2001-12-06 Fujitsu Limited Systeme de gestion de droit d'utilisation et support enregistre
JP3712366B2 (ja) * 2000-08-15 2005-11-02 株式会社ソニー・コンピュータエンタテインメント 情報処理システム、実行可能モジュール生成方法および記憶媒体
WO2002019214A1 (en) * 2000-08-28 2002-03-07 Thomas Probert Registry for management of intellectual property rights, properties and constraints
JP2002099340A (ja) * 2000-09-21 2002-04-05 Ec-One Inc コンポーネント・サービス・ネットワークシステム
ATE479930T1 (de) 2000-09-21 2010-09-15 Research In Motion Ltd System und verfahren zum unterschreiben eines software-kodes
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US7793111B1 (en) 2000-09-28 2010-09-07 Intel Corporation Mechanism to handle events in a machine with isolated execution
US20020082717A1 (en) * 2000-10-31 2002-06-27 Isogon Corporation Method and system for centralizing and harmonizing the operations of plural software license managers
US7197466B1 (en) 2000-11-02 2007-03-27 General Electric Capital Corporation Web-based system for managing software assets
US20020107701A1 (en) * 2001-02-02 2002-08-08 Batty Robert L. Systems and methods for metering content on the internet
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US7178143B2 (en) 2001-03-09 2007-02-13 Bea Systems, Inc. Multi-version hosting of application services
US7140012B2 (en) * 2001-03-09 2006-11-21 Bea Systems, Inc. Method and apparatus for multi-version updates of application services
CA2446584A1 (en) * 2001-05-09 2002-11-14 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
US7526811B1 (en) * 2001-05-22 2009-04-28 Novell, Inc. Methods for detecting executable code which has been altered
US7343297B2 (en) * 2001-06-15 2008-03-11 Microsoft Corporation System and related methods for managing and enforcing software licenses
US8504479B2 (en) * 2001-08-29 2013-08-06 Conexant Systems, Inc. Key interface for secure object manipulation
EP1293895A3 (de) * 2001-09-14 2006-01-25 Ricoh Company, Ltd. Programmausführungsgerät und -verfahren zum Erzeugen eines ausführbaren Programms, und Adressauflösungsverfahren
JP4051909B2 (ja) * 2001-09-20 2008-02-27 株式会社日立製作所 アプリケーションソフトウエアのサービスを提供するシステム、およびアプリケーションソフトウエアの利用を提供する方法
US7680742B1 (en) * 2001-10-09 2010-03-16 Novell, Inc. System and method for controlling access to licensed computing processes via a codified electronic license
US20030084341A1 (en) * 2001-11-01 2003-05-01 Arun Ramachandran Implementation of security barriers in a usage based licensing server data structure
DE20204651U1 (de) * 2002-03-18 2003-08-07 Peeters Bernd Vorrichtung zum Schutz gegen unauthorisierte Benutzung von Software
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US20040006544A1 (en) * 2002-07-03 2004-01-08 Michael Gulett Integrated licensing, design, and supply system, method, and article of manufacture for semiconductor chips
US7185319B2 (en) * 2002-07-09 2007-02-27 Microsoft Corporation Debugging distributed applications
US7137114B2 (en) * 2002-12-12 2006-11-14 International Business Machines Corporation Dynamically transferring license administrative responsibilities from a license server to one or more other license servers
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7644442B2 (en) * 2003-01-31 2010-01-05 Microsoft Corporation Systems and methods for using machine attributes to deter software piracy in an enterprise environment
US8181265B2 (en) * 2003-01-31 2012-05-15 Microsoft Corporation Secure machine counting
US7370212B2 (en) * 2003-02-25 2008-05-06 Microsoft Corporation Issuing a publisher use license off-line in a digital rights management (DRM) system
CN103001923B (zh) * 2003-06-05 2016-03-30 英特特拉斯特技术公司 用于控制对在计算机系统上的电子内容片段的访问的方法和系统
DE10330191A1 (de) * 2003-07-03 2005-02-10 Siemens Ag System bzw. Verfahren zur Freigabe freigabebedürftigter Softwareprogramme
US7464270B2 (en) * 2003-07-23 2008-12-09 Microsoft Corporation Application identification and license enforcement
US7721228B2 (en) * 2003-08-05 2010-05-18 Yahoo! Inc. Method and system of controlling a context menu
US7793227B2 (en) * 2003-08-12 2010-09-07 Yahoo! Inc. Method and system of providing customizable buttons
US7472286B2 (en) * 2003-08-29 2008-12-30 Microsoft Corporation Selectively authorizing software functionality after installation of the software
US8351914B2 (en) * 2003-08-29 2013-01-08 Sony Mobile Communications Ab Method and system for registration of licensed modules in mobile devices
US20050080934A1 (en) 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US10437964B2 (en) * 2003-10-24 2019-10-08 Microsoft Technology Licensing, Llc Programming interface for licensing
US7506260B2 (en) * 2003-10-31 2009-03-17 Yahoo! Inc. Method and system of providing browser functionality through a browser button
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US9489687B2 (en) * 2003-12-04 2016-11-08 Black Duck Software, Inc. Methods and systems for managing software development
US20060116966A1 (en) * 2003-12-04 2006-06-01 Pedersen Palle M Methods and systems for verifying protectable content
US7552093B2 (en) * 2003-12-04 2009-06-23 Black Duck Software, Inc. Resolving license dependencies for aggregations of legally-protectable content
US8700533B2 (en) * 2003-12-04 2014-04-15 Black Duck Software, Inc. Authenticating licenses for legally-protectable content based on license profiles and content identifiers
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US20060242406A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US7765600B2 (en) * 2004-05-04 2010-07-27 General Instrument Corporation Methods and apparatuses for authorizing features of a computer program for use with a product
US7392523B1 (en) * 2004-06-01 2008-06-24 Symantec Corporation Systems and methods for distributing objects
US20050278258A1 (en) * 2004-06-14 2005-12-15 O'donnell Michael User software for facilitating copyright licensing and compliance
EP1810229A4 (de) * 2004-06-22 2011-10-05 Ebooks Corp Ltd Leihsystem und -verfahren
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
JP4411173B2 (ja) * 2004-09-30 2010-02-10 富士通株式会社 コンピュータシステムの管理方法およびコンピュータ管理システムおよびコンピュータ管理プログラム
US8347078B2 (en) * 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US20060089917A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation License synchronization
GB2422919B (en) * 2004-11-02 2009-05-27 T Mobile Int Ag & Co Kg Software application security access management in mobile communication devices
US7412655B2 (en) 2004-11-02 2008-08-12 Yahoo! Inc. Method and system of providing dynamic dialogs
JP4444293B2 (ja) * 2004-11-11 2010-03-31 独立行政法人科学技術振興機構 演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録した記録媒体
US8176564B2 (en) 2004-11-15 2012-05-08 Microsoft Corporation Special PC mode entered upon detection of undesired state
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US8464348B2 (en) * 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
KR100652386B1 (ko) * 2004-11-16 2006-12-06 삼성전자주식회사 호스트와 하드디스크 드라이브 사이의 어플리케이션공유에 의한 작업 효율 증대방법 및 장치
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US8818899B2 (en) * 2005-01-19 2014-08-26 Blackberry Limited Method and apparatus for deploying and licensing wireless communication device computer software infrastructure to manufacturers
US8225301B2 (en) * 2005-03-16 2012-07-17 Hewlett-Packard Development Company, L.P. Software licensing management
US7797245B2 (en) * 2005-03-18 2010-09-14 Black Duck Software, Inc. Methods and systems for identifying an area of interest in protectable content
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
US8725646B2 (en) 2005-04-15 2014-05-13 Microsoft Corporation Output protection levels
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US9436804B2 (en) * 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
US20060265758A1 (en) * 2005-05-20 2006-11-23 Microsoft Corporation Extensible media rights
US8353046B2 (en) * 2005-06-08 2013-01-08 Microsoft Corporation System and method for delivery of a modular operating system
US20060288009A1 (en) * 2005-06-20 2006-12-21 Tobid Pieper Method and apparatus for restricting access to an electronic product release within an electronic software delivery system
US8271387B2 (en) * 2005-06-20 2012-09-18 Intraware, Inc. Method and apparatus for providing limited access to data objects or files within an electronic software delivery and management system
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) * 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US20060294022A1 (en) * 2005-06-22 2006-12-28 Dayan Richard A Apparatus, system, and method for enabling a service
US8340289B2 (en) 2005-09-29 2012-12-25 Research In Motion Limited System and method for providing an indication of randomness quality of random number data generated by a random data service
US7809957B2 (en) 2005-09-29 2010-10-05 Intel Corporation Trusted platform module for generating sealed data
US7797545B2 (en) 2005-09-29 2010-09-14 Research In Motion Limited System and method for registering entities for code signing services
US20070083378A1 (en) * 2005-10-11 2007-04-12 Microsoft Corporation Secure application programming interface
US9626667B2 (en) * 2005-10-18 2017-04-18 Intertrust Technologies Corporation Digital rights management engine systems and methods
KR101285946B1 (ko) * 2005-10-18 2013-08-23 인터트러스트 테크놀로지즈 코포레이션 디지털 권리 관리를 위한 방법
US20070204078A1 (en) * 2006-02-09 2007-08-30 Intertrust Technologies Corporation Digital rights management engine systems and methods
EP2631679B1 (de) * 2005-11-10 2014-07-09 Halliburton Energy Services, Inc. Versetzter Elektrodenverstärker
JP4537940B2 (ja) * 2005-11-21 2010-09-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、及びプログラム実行制御方法
JP5190800B2 (ja) * 2006-02-21 2013-04-24 日本電気株式会社 プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US8788829B2 (en) 2006-08-17 2014-07-22 Aol Inc. System and method for interapplication communications
US7681045B2 (en) * 2006-10-12 2010-03-16 Black Duck Software, Inc. Software algorithm identification
US8010803B2 (en) 2006-10-12 2011-08-30 Black Duck Software, Inc. Methods and apparatus for automated export compliance
US7900243B2 (en) * 2006-10-19 2011-03-01 Oracle America, Inc. Method and system for managing execution of an application module
US20080147227A1 (en) * 2006-10-31 2008-06-19 Delaney William P Systems and methods for improved product variant configuration and distribution in hub-based distribution
US8032764B2 (en) * 2006-11-14 2011-10-04 Texas Instruments Incorporated Electronic devices, information products, processes of manufacture and apparatus for enabling code decryption in a secure mode using decryption wrappers and key programming applications, and other structures
US9003296B2 (en) * 2006-12-20 2015-04-07 Yahoo! Inc. Browser renderable toolbar
US7760767B2 (en) * 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US20080189400A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation Measuring Client Access Licenses
US7984515B1 (en) * 2007-03-30 2011-07-19 Emc Corporation Software license enforcement by runtime feature enablement
US8776258B2 (en) * 2007-06-20 2014-07-08 David J. Linsley Providing access rights to portions of a software application
US9374379B1 (en) 2007-06-26 2016-06-21 Aol Inc. Application unlock
US9336369B2 (en) * 2007-09-28 2016-05-10 Abbyy Development Llc Methods of licensing software programs and protecting them from unauthorized use
US7876205B2 (en) * 2007-10-02 2011-01-25 Inthinc Technology Solutions, Inc. System and method for detecting use of a wireless device in a moving vehicle
US9111108B2 (en) * 2008-02-25 2015-08-18 Telefonaktiebolaget L M Ericsson (Publ) System, method and program for controlling access rights
US20090271319A1 (en) * 2008-04-29 2009-10-29 Microsoft Corporation Embedded Licenses for Content
US8935528B2 (en) * 2008-06-26 2015-01-13 Microsoft Corporation Techniques for ensuring authentication and integrity of communications
US20100153884A1 (en) * 2008-12-12 2010-06-17 Yahoo! Inc. Enhanced web toolbar
US9519906B2 (en) * 2008-12-19 2016-12-13 Genesys Telecommunications Laboratories, Inc. Method for monitoring and ranking web visitors and soliciting higher ranked visitors to engage in live assistance
US8438113B2 (en) * 2010-01-25 2013-05-07 Richard Stahl Automated digital express gateway for licensing and acquiring rights and permissions for 3rd party copyrighted content
US9342825B2 (en) 2010-06-10 2016-05-17 International Business Machines Corporation Software license and installation process management within an organization
US8955152B1 (en) * 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
US8763158B2 (en) 2010-12-06 2014-06-24 Microsoft Corporation Directory service distributed product activation
CN103597488B (zh) 2011-04-11 2016-08-24 英特托拉斯技术公司 信息安全系统和方法
US20130036058A1 (en) * 2011-08-03 2013-02-07 American Express Travel Related Services Company, Inc. Systems and methods for securely processing transactions
US20130067533A1 (en) * 2011-09-11 2013-03-14 Microsoft Corporation Generating a test license for a developer application
US9137246B2 (en) 2012-04-09 2015-09-15 Brivas Llc Systems, methods and apparatus for multivariate authentication
CN102722403B (zh) * 2012-05-30 2014-10-29 福建天晴数码有限公司 一种接管Windows桌面方法
CN102831344B (zh) * 2012-07-27 2015-04-15 北京奇虎科技有限公司 一种进程的处理方法和装置
JP6079208B2 (ja) * 2012-12-19 2017-02-15 株式会社ソシオネクスト マイクロコンピュータ,そのミドルウエア及びマイクロコンピュータの動作方法
US9047161B1 (en) * 2013-01-16 2015-06-02 Sprint Communications Company L.P. Discovery, consolidation, and archival of multiple operating system software licenses
US9176974B1 (en) 2013-01-18 2015-11-03 Sprint Communications Company L.P. Low priority, multi-pass, server file discovery and management
CN104217359A (zh) * 2013-05-30 2014-12-17 华为终端有限公司 一种软件的转售方法、装置和系统
JP2015219890A (ja) * 2014-05-21 2015-12-07 キヤノン株式会社 管理装置、その制御方法およびプログラム
US9460273B2 (en) * 2014-10-29 2016-10-04 International Business Machines Corporation Automatic generation of license terms for service application marketplaces
US10242164B2 (en) 2015-10-19 2019-03-26 Microsoft Technology Licensing, Llc Managing application specific feature rights
CN109829004B (zh) * 2018-12-26 2022-03-01 阿波罗智能技术(北京)有限公司 基于无人车的数据处理方法、装置、设备以及存储介质
US10769379B1 (en) 2019-07-01 2020-09-08 Unified Compliance Framework (Network Frontiers) Automatic compliance tools
US11586746B2 (en) * 2019-11-08 2023-02-21 Microsoft Technology Licensing, Llc Integration management of applications
KR20220003233A (ko) * 2020-07-01 2022-01-10 주식회사 빅솔론 애플리케이션을 통한 디바이스의 제어 방법, 이를 수행하기 위한 장치 및 시스템
EP4205018A1 (de) 2020-08-27 2023-07-05 Unified Compliance Framework (Network Frontiers) Automatische identifizierung von mehrwortausdrücken
US20230031040A1 (en) 2021-07-20 2023-02-02 Unified Compliance Framework (Network Frontiers) Retrieval interface for content, such as compliance-related content
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US4924378A (en) * 1988-06-13 1990-05-08 Prime Computer, Inc. License mangagement system and license storage key
US5023907A (en) * 1988-09-30 1991-06-11 Apollo Computer, Inc. Network license server
US4953209A (en) 1988-10-31 1990-08-28 International Business Machines Corp. Self-verifying receipt and acceptance system for electronically delivered data objects
JP3032788B2 (ja) * 1991-05-08 2000-04-17 ディジタル イクイプメント コーポレイション ライセンス管理システム
US5204897A (en) * 1991-06-28 1993-04-20 Digital Equipment Corporation Management interface for license management system
US5438508A (en) * 1991-06-28 1995-08-01 Digital Equipment Corporation License document interchange format for license management system
ATE177857T1 (de) 1992-05-15 1999-04-15 Addison M Fischer Verfahren und vorrichtung zur sicherheit eines computersystem mit programmberechtigungsdatenstrukturen
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
US5287408A (en) * 1992-08-31 1994-02-15 Autodesk, Inc. Apparatus and method for serializing and validating copies of computer software
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5481706A (en) * 1993-11-01 1996-01-02 International Business Machines Corporation System and method for creating thread-safe shared libraries
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5481897A (en) * 1994-01-19 1996-01-09 Demmer Corporation Double plane bend former
US5553143A (en) * 1994-02-04 1996-09-03 Novell, Inc. Method and apparatus for electronic licensing
JPH07230380A (ja) 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5606609A (en) * 1994-09-19 1997-02-25 Scientific-Atlanta Electronic document verification system and method
JPH08129507A (ja) * 1994-10-31 1996-05-21 Ricoh Co Ltd 情報保管管理システム
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
US5592549A (en) * 1995-06-15 1997-01-07 Infosafe Systems, Inc. Method and apparatus for retrieving selected information from a secure information source
WO1997014087A1 (en) 1995-10-13 1997-04-17 Trustees Of Dartmouth College System and methods for managing digital creative works
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5708709A (en) 1995-12-08 1998-01-13 Sun Microsystems, Inc. System and method for managing try-and-buy usage of application programs
JPH09190236A (ja) * 1996-01-10 1997-07-22 Canon Inc 情報処理方法及び装置及びシステム
US5673316A (en) * 1996-03-29 1997-09-30 International Business Machines Corporation Creation and distribution of cryptographic envelope
US6523170B1 (en) * 1996-07-26 2003-02-18 International Business Machines Corporation Technique for creating internet enabled resource files
US5822739A (en) * 1996-10-02 1998-10-13 E-Stamp Corporation System and method for remote postage metering
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
EP1735943A4 (de) 2004-04-14 2010-10-06 Digital River Inc Auf geografischer position basierendes lizenzierungssystem

Also Published As

Publication number Publication date
DE69812139D1 (de) 2003-04-17
WO1999005600A3 (en) 1999-05-14
US20130179989A1 (en) 2013-07-11
WO1999005600A2 (en) 1999-02-04
US8781971B2 (en) 2014-07-15
US8452712B2 (en) 2013-05-28
EP1023664B1 (de) 2003-03-12
US6188995B1 (en) 2001-02-13
CA2298516A1 (en) 1999-02-04
EP1023664A2 (de) 2000-08-02
US20120066135A1 (en) 2012-03-15
US8027925B1 (en) 2011-09-27

Similar Documents

Publication Publication Date Title
DE69812139T2 (de) Verfahren und vorrichtung zur software-lizenz-erzwingung
DE10196007B4 (de) Plattform und Verfahren zum Fernattestieren einer Plattform
DE112004002470B4 (de) Zertifikat-Basiertes Digitales Rechte-Management
DE69731714T2 (de) Dynamische Dienstklassen für eine internationale kryptographische Struktur
US6892201B2 (en) Apparatus and method for providing access rights information in a portion of a file
US7171562B2 (en) Apparatus and method for providing a user interface based on access rights information
DE69634684T2 (de) Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
EP1299790B1 (de) Filtern eines erlaubnissets mit hilfe von erlaubnisanfragen die mit einer kodeanordnung verknüpft sind
US6317868B1 (en) Process for transparently enforcing protection domains and access control as well as auditing operations in software components
DE69727198T2 (de) Durchführen digitaler Unterschriften für Datenströme und Archive
DE60011615T2 (de) Techniken zum erlauben von zugang durch eine kontextsperre in einem kleinen gerät unter verwendung von globalen datenstrukturen
JP4738708B2 (ja) 証拠ベースのセキュリティポリシーマネージャ
DE60212920T3 (de) Verfahren und system zur verwaltung von digitalen abonnementrechten
US20030177248A1 (en) Apparatus and method for providing access rights information on computer accessible content
EP1515238A2 (de) Zeichensatzanfragebearbeitungssystem und -verfahren
DE112007001321T5 (de) Ausführung eines Sichere-Umgebungs-Initialisierungsbefehls in einem Punkt-zu-Punkt-Verbindungssystem
JP2768834B2 (ja) コンピュータシステムにおける入出力動作のアクセスセキュリティを維持する方法およびシステム
EP3497606B1 (de) Individuelles verschlüsseln von steuerbefehlen
US7607176B2 (en) Trainable rule-based computer file usage auditing system
Frincke Developing secure objects
Arnab et al. Investigating the Performance Implications of an Operating System Level DRM Controller Implementation
Carpenter et al. The TOE evaluation was sponsored by: BAE Systems Information Technology Inc.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: APPLE INC., CUPERTINO, CALIF., US