DE69927022T2 - Verfahren zur steuerung der benutzung von softwarekomponenten - Google Patents

Verfahren zur steuerung der benutzung von softwarekomponenten Download PDF

Info

Publication number
DE69927022T2
DE69927022T2 DE69927022T DE69927022T DE69927022T2 DE 69927022 T2 DE69927022 T2 DE 69927022T2 DE 69927022 T DE69927022 T DE 69927022T DE 69927022 T DE69927022 T DE 69927022T DE 69927022 T2 DE69927022 T2 DE 69927022T2
Authority
DE
Germany
Prior art keywords
component
application program
key
identifier
password
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
DE69927022T
Other languages
English (en)
Other versions
DE69927022D1 (de
Inventor
S. Kenneth KNAPTON
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE69927022D1 publication Critical patent/DE69927022D1/de
Application granted granted Critical
Publication of DE69927022T2 publication Critical patent/DE69927022T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Description

  • 1. GEBIET DER TECHNIK
  • Die vorliegende Erfindung betrifft allgemein die objektorientierte Programmierung und die Objektsicherheit, und im Besonderen betrifft sie ein Verfahren zum Steuern der Nutzung von Softwarekomponenten über ein Anwendungsprogramm in einem Computersystem.
  • 2. BESCHREIBUNG DES STANDS DER TECHNIK
  • Das Erzeugen bzw. Entwickeln von Software als einzeln vertriebene objektorientierte Programme oder Komponenten ist ein neuerer Trend, dem zahlreiche Softwareentwickler folgen. Eine Softwarekomponente ist ein Teil einer Software, der dazu dient, mit anderer Software zusammenzuwirken, wie zum Beispiel mit einem Anwendungsprogramm. In einigen Fällen wird die Softwarekomponente getrennt bzw. unabhängig von dem Anwendungsprogramm entwickelt. Entwickler wollen ihre Anwendungsprogramme mit größerer Flexibilität versehen, indem sie Abschnitte oder Funktionen der Software als separate Komponenten strukturieren. Dies ermöglicht dem Endverbraucher die Lizenznahme nur der Funktionen bzw. Merkmale, die der Endverbraucher wünscht.
  • Bestimmte Komponenten werden unter Verwendung einer allgemein bekannten Technologie mit der Bezeichnung ActiveX-Controls geschrieben. ActiveX-Controls sind eine Teilmenge bzw. eine Untergruppe der von der Microsoft Corporation entwickelten Technologie Component Object Module (COM). Die COM-Technologie kann in einer von mehreren objektorientierten Programmiersprachen geschrieben werden, wie zum Beispiel C++, Java und Visual Basic. ActiveX-Controls sind für gewöhnlich mit einem Abschnitt eines Anwendungsprogramms mit der Bezeichnung Control Container verknüpft bzw. „plugged in" (eingesteckt). Eine ActiveX-Control registriert sich selbst zur Verwendung durch ein auf einem Computersystem ausgeführtes Anwendungsprogramm. In Systemen, die Versionen des Betriebssystems Windows ausführen, die von der Microsoft Corporation erhältlich sind, wird eine Datenbank bzw. Registrierdatenbank mit dem Namen Registry dazu verwendet, Registrierungsinformationen bzw. Registrierungsdaten für autorisierte Komponenten zu speichern. Die Registry bzw. Registrierdatenbank bietet eine Möglichkeit für eine Komponente, wie etwa eine ActiveX-Control, das Anwendungsprogramm über die Funktionalität der Komponente zu informieren. Die Registry weist für gewöhnlich Informationen auf, welche bestimmte Komponenten identifizieren, wie etwa Global Unique Identifier (GUIDs), Category Identifier (CATIDs) und Class Identifier (CLSIDs).
  • Der Zugriff auf eine Komponente, wie etwa ein COM-Objekt, ist über eine Quellcode-Schnittstellendefinition möglich, die als Layer Class (Schichtklasse) bezeichnet wird. Die Layer Class stellt eine Schnittstelle zwischen dem Anwendungsprogramm und der Komponente bereit (bei der es sich zum Beispiel um eine ActiveX-Control handeln kann). Ein GUID wird für gewöhnlich in eine bestimmte Schichtklasse bzw. Layer Class „hart codiert" bzw. voreingestellt. Zusätzliche Komponenten können mit einem Anwendungsprogramm gekoppelt oder in dieses eingesteckt werden (Plug-In), das bereits eine oder mehrere Komponenten aufweisen kann. Eine Plug-In-Komponente gilt als „quellenkompatibel", wenn eine neue Version der Komponente in einem Anwendungsprogramm unverändert funktionsfähig ist, wobei das Anwendungsprogramm jedoch für gewöhnlich neu gestaltet werden muss. Das heißt, das Anwendungsprogramm kann rekompiliert und neu verknüpft werden, bevor das Anwendungsprogramm mit der durch die neue Komponente bereitgestellten Funktionalität ausgeführt wird.
  • Der Einsatz von Komponenten in diesem Softwarearchitekturmodell stellt Softwareentwickler vor Probleme, wenn diese versuchen, die einzelnen Komponenten zu vertreiben und zu lizenzieren. Aktuell gibt es mindestens drei bedeutende Ansätze, die von Entwicklern eingesetzt werden, um Anwendungsprogramme mit einer oder mehreren Komponenten zu strukturieren und zu lizenzieren. In einem ersten Ansatz kann ein Anwendungsprogramm auf Quellcode-Ebene in Komponenten partitioniert werden. In vielen Fällen können die Komponenten mit auf verschiedene Art und Weise mit dem Anwendungsprogramm kombiniert werden. Dies führt zu einer unterschiedlichen bzw. neuen „Version" der Software für jede neue Kombination. Mit zunehmender Anzahl der Kombinationen aus Komponenten und Anwendungsprogrammen nimmt auch die Anzahl der verschiedenen Versionen schnell zu, wodurch wiederum die Kosten für die Distribution und den Support der Software ansteigen. Bei einem zweiten Ansatz verwendet ein Anwendungsprogramm für die Implementierung der Komponenten DLL-Dateien (DLL als englische Abkürzung von Dynamic Link Library bzw. dynamische Linkbibliothek). Ein wesentlicher Nachteil der Verwendung von DLL-Dateien ist es, dass DLL-Dateien für gewöhnlich nicht von einem Endverbraucher registriert sind und leicht von einem Computersystem auf ein anderes kopiert bzw. überspielt werden können. Bei einem dritten Ansatz verwendet ein Anwendungsprogramm die Technologie Component Object Modules (COM) oder eine ähnliche Technologie, um Komponenten zu registrieren, wie dies vorstehend im Text in Bezug auf ActiveX-Controls beschrieben worden ist. Diese Objekte können jedoch leicht von einem Computersystem in ein anderes kopiert werden. Das U.S. Patent US-A-5,652,793 beschreibt ein Verfahren zur Erzeugung eines Passworts zur Steuerung der Nutzung einer Anwendung unter Verwendung des Anwendungsbezeichners und einer Ziffer bzw. Zahl, welche den Computer eindeutig identifiziert.
  • Diese Ansätze stellen keinen angemessenen Schutz gegen eine unbefugte Nutzung einer Software eines Entwicklers bereit, indem die Anwendungsprogramme auf eine Zusammenarbeit nur mit lizenzierten Versionen der Komponenten des Entwicklers beschränkt werden. Benötigt wird somit ein Verfahren, das sicherstellt, dass nicht lizenzierte Kopien von Softwarekomponenten nicht mit zugeordneten Anwendungsprogrammen eingesetzt werden können.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Dieses Problem wird durch den Gegenstand der Hauptansprüche 1 und 5 gelöst.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden genauen Beschreibung der vorliegenden Erfindung deutlich. In den Zeichnungen zeigen:
  • 1 ein Blockdiagramm einer Betriebsumgebung eines Ausführungsbeispiels der vorliegenden Erfindung;
  • 2 ein Diagramm eines beispielhaften Computersystems, das sich für eine Programmierung mit Ausführungsbeispielen der Verfahren zur Steuerung der Nutzung von Softwarekomponenten gemäß der vorliegenden Erfindung eignet;
  • 3 ein Flussdiagramm zum Erzeugen eines Komponentenpassworts gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 4 ein Diagramm einer Kombination von Datenobjekten, die beim Erzeugen eines Komponentenpassworts gemäß einem Ausführungsbeispiel der vorliegenden Erfindung verwendet wird; und
  • 5 ein Flussdiagramm der Registrierung und Authentifizierung einer Komponente gemäß Ausführungsbeispielen der vorliegenden Erfindung.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • In der folgenden Beschreibung werden verschiedene Aspekte der vorliegenden Erfindung beschrieben. Zu Zwecken der Erläuterung sind bestimmte Ziffern bzw. Zahlen, Systeme und Konfigurationen ausgeführt, die ein umfassendes Verständnis der vorliegenden Erfindung vermitteln sollen. Für den Fachmann auf dem Gebiet ist es jedoch ersichtlich, dass die vorliegende Erfindung auch ohne die besonderen Einzelheiten ausgeführt werden kann. In anderen Fällen wurden allgemein bekannte Funktionen bzw. Merkmale weggelassen oder vereinfacht dargestellt, um die vorliegende Erfindung nicht unnötig zu verschleiern.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich um ein Verfahren zum Steuern der Nutzung von Softwarekomponenten in einem Computersystem, indem diese durch verschlüsselte Passwörter geschützt werden. Dies ermöglicht es Softwareentwicklern, Softwarekomponenten zur Verwendung in einer Vielzahl von Anwendungsprogrammkonfigurationen einzeln bzw. unabhängig zu vermarkten. In Verbindung mit den Ausführungsbeispielen der vorliegenden Erfindung können Anwendungsprogramme in Komponenten aufgeteilt werden, und wobei eine sichere Möglichkeit für „Plug-Ins" oder „Snap-Ins" der Komponenten bereitgestellt wird. Vorzugsweise erlangt der Endverbraucher Lizenzen für all diese Komponenten bevor diese vertrieben werden. Die Komponenten können einzeln oder gemeinsam vertrieben und lizenziert werden. Ausführungsbeispiele der vorliegenden Erfindung stellen sicher, dass eine Komponente nur in Verbindung mit einem Anwendungsprogramm funktionsfähig ist, das eine Lizenznummer aufweist, die beim Lizenzerwerb der Komponente bereitgestellt worden ist. Wenn eine andere Kopie des Anwendungsprogramms versucht, auf die Komponente zuzugreifen (z.B. die Komponente wurde in ein anderes Computersystem kopiert, das ein Anwendungsprogramm mit einer anderen Lizenznummer aufweist), wird die Komponente nicht integriert bzw. aufgenommen. In diesem Fall wird die Komponente von dem Anwendungsprogramm nicht anerkannt und sie erscheint für den Endverbraucher nicht als eine Funktion oder ein Merkmal des Anwendungsprogramms.
  • Die Abbildung aus 1 zeigt ein Blockdiagramm einer Betriebsumgebung eines Ausführungsbeispiels der vorliegenden Erfindung. Ein Computersystem 10 eines Endverbrauchers führt ein Anwendungsprogramm 12 aus, das vorher von einem Softwareentwickler (nicht abgebildet) lizenziert worden ist. Bei dem Computersystem des Endverbrauchers kann es sich um einen Personalcomputer (PC), eine Entwicklungs-Workstation, einen Minirechner, einen Netzwerkcomputer oder eine andere Rechenvorrichtung handeln. Das Anwendungsprogramm steht für jede Computersoftware, die in einer beliebigen Programmiersprache geschrieben ist und von einem Endverbraucher lizenziert worden ist, um gewünschte Funktionen auf dem Computersystem des Benutzers auszuführen. In bestimmten Ausführungsbeispielen kann es sich bei der verwendeten Programmiersprache und der objektorientierten Technologie um eine oder mehrere der folgenden Optionen handeln: C++, Java, Visual Basic, COM, Distributed COM (DCOM), ActiveX und dergleichen. Der Fachmann auf dem Gebiet erkennt, dass andere Programmiertechnologien und Programmiersprachen ebenso verwendet werden können. Das Anwendungsprogramm 12 kann eine oder mehrere Komponenten aufweisen, die mit 14, 16 und 18 bezeichnet sind. Jede Komponente stellt für das Anwendungsprogramm eine bestimmte gewünschte Funktionalität bereit, sobald die Komponente kommunikativ mit dem Anwendungsprogramm gekoppelt ist. Diese Kopplung ist auch als die Ausführung eines „Snap-In" oder „Plug-In" der Komponente bekannt. Die Komponenten können in Verbindung mit dem Anwendungsprogramm an Endverbraucher verteilt und für diese lizenziert werden, wobei aber auch einzelne Komponenten nacheinander zu dem Computersystem des Endverbrauchers übertragen werden können, und zwar zur Verwendung in Verbindung mit dem Anwendungsprogramm je nach Bedarf. Der Endverbraucher leitet die Ausführung des Anwendungsprogramms 12 durch das Computersystem 10 ein, um die durch das Anwendungsprogramm und die verbundenen Komponenten 14, 16 und 18 bereitgestellten Funktionen auszuführen.
  • Das Anwendungsprogramm 12 umfasst eine Registry bzw. eine Registrierdatenbank 20. Die Registrierdatenbank speichert Informationen über das Anwendungsprogramm und die Komponenten, die zur Verwendung mit dem Anwendungsprogramm gekoppelt worden sind. In einem Ausführungsbeispiel handelt es sich bei den Komponenten um ActiveX-Controls, und die Registrierdatenbank umfasst mindestens die Global Unique Identifier (GUIDs) der ActiveX-Controls. Für die ActiveX-Controls, welche dynamische Linkbibliotheken (DLLs) verwenden, kann die Registrierung erreicht werden durch das Aufrufen eines DLLRegisterServer()) Verfahrens in Computersystemen auf der Basis eines Windows-Betriebssystems. Für andere Steuerungen als ActiveX-Controls ohne die Verwendung von DLLs, kann die Registrierung durch spezielle ausführbare Programme (EXEs) erreicht werden, die für diesen Zweck vorgesehen sind. Das Anwendungsprogramm 12 umfasst eine Steuerfunktion der Anwendungssicherheit 22, welche so arbeitet, dass sie in dem vorliegenden Ausführungsbeispiel sicherstellt, dass nur lizenzierte Komponenten in Verbindung mit dem Anwendungsprogramm verwendet werden. Zusätzliche Informationen in Bezug auf die Steuerung der Anwendungssicherheit sind ferner nachstehend in Einzelheiten in Bezug auf die Abbildung aus 5 ausgeführt.
  • Die Steuerung der Distribution und der Sicherheit des Anwendungsprogramms und der Komponenten können durch ein Controller-Computersystem 24 unterstützt werden. Das Controller-Computersystem kann zumindest eine Kopie jeder der Komponenten und des Anwendungsprogramms speichern. Die Komponenten und das Anwendungsprogramm können auch auf herkömmlichen Speichermedien (nicht abgebildet) gespeichert werden, die mit dem Computersystem gekoppelt sind oder die ansonsten durch das Computersystem beschrieben werden können, wie etwa CD-ROMs (als englische Abkürzung von Compact Disk Read Only Memories), Floppy-Disks, DVDs (als englische Abkürzung von Digital Versatile Disks), Magnetbänder und dergleichen. Die Anzahl der in dem Controller-Computersystem gespeicherten und zur Lizenzierung durch das Endverbraucher-Computersystem zur Verfügung stehenden Komponenten kann sich von der Anzahl der in dem Anwendungsprogramm 12 aus 1 dargestellten Komponenten unterscheiden. Der Controller weist gemäß Ausführungsbeispielen der vorliegenden Erfindung ferner eine Controller-Sicherheitsregelung 26, die in Verbindung mit der Steuerung 22 der Anwendungssicherheit in dem Anwendungsprogramm 12 arbeitet sowie den Komponenten 14, 16 und 18, um eine unbefugte Nutzung der Komponenten zu verhindern.
  • Der Controller 24 kann durch allgemein bekannte Techniken über ein Netzwerk 28 wie etwa das Internet kommunikativ mit dem Endverbraucher-Computersystem 10 gekoppelt werden. In diesem Szenario können lizenzierte Anwendungsprogramme und Komponenten über das Netzwerk zu dem Computersystem des Endverbrauchers übertragen werden. Alternativ kann die Steuereinheit bzw. der Controller in einem „Standalone"-Modus betrieben werden, wobei er sich nicht in Übertragungsverbindung mit dem Netzwerk befindet. In diesem Fall sind die Anwendungsprogramme und Komponenten in einem beliebigen von mehreren allgemein bekannten Speichermedien ausgeführt und werden über kommerzielle Kanäle an Endverbraucher vertrieben. Das Controller-Computersystem kann von einem Entwickler des Anwendungsprogramms und der Komponenten oder einem anderen Distributor, einem Original Equipment Manufacturer (OEM) oder Anbieter verwaltet werden.
  • Die Abbildung aus 2 zeigt ein Diagramm eines beispielhaften Computersystems, das sich zur Programmierung mit Ausführungsbeispielen des Verfahrens zur Steuerung bzw. Regelung der Nutzung von Softwarekomponenten gemäß der vorliegenden Erfindung eignet. Das beispielhafte Computersystem 100 kann zum Beispiel zum Ausführen der Verarbeitung für die hierin beschriebenen Verfahren verwendet werden, sowohl für das Endverbraucher-Computersystem und das Controller-Computersystem. Das beispielhafte Computersystem 100 steht für Computersysteme auf der Basis der Mikroprozessoren PENTIUM®, PENTIUM® Pro und PENTIUM® II, die von der Intel Corporation erhältlich sind, wobei aber auch andere Computersysteme (einschließlich Personalcomputer (PCs)) mit anderen Mikroprozessoren, Entwicklungs-Workstations und dergleichen) ebenfalls verwendet werden können. Das beispielhafte Computersystem 100 weist einen Mikroprozessor 102 und einen Cache-Speicher 104 auf, die über den Prozessorbus 105 miteinander gekoppelt sind. Das beispielhafte Computersystem 100 weist ferner einen Hochleistungs-E/A-Bus 108 und einen Standard-E/A-Bus 118 auf. Der Prozessorbus 105 und der Hochleistungs-E/A-Bus 108 werden über die E/A-Busbrücke 110 überbrückt. Der Hauptspeicher 112 und der Videospeicher 114 sind mit dem Hochleistungs-E/A-Bus 108 gekoppelt. Das Videodisplay bzw. der Videobildschirm 116 sind mit dem Videospeicher 114 gekoppelt. Ein Massenspeicher 120 und Tastatur- sowie Zeigevorrichtungen 122 sind mit dem Standard-E/A-Bus 118 gekoppelt.
  • Diese Elemente führen ihre im Fach allgemein bekannten herkömmlichen Funktionen aus. Im Besonderen kann der Massenspeicher 120 dazu verwendet werden, einen dauerhaften Speicher für die ausführbaren Befehle für Ausführungsbeispiele von Verfahren zur Steuerung der Nutzung von Softwarekomponenten gemäß der vorliegenden Erfindung bereitzustellen, während der Hauptspeicher 112 dazu verwendet wird, die ausführbaren Speicher von Ausführungsbeispielen der Verfahren zur Steuerung der Nutzung von Softwarekomponenten gemäß der vorliegenden Erfindung während der Ausführung durch den Mikroprozessor 102 vorübergehend bzw. temporär zu speichern.
  • In Ausführungsbeispielen der vorliegenden Erfindung basiert die Datensicherheit für einzeln erhältliche bzw. verfügbare Komponenten darauf, dass der Endverbraucher die Lizenznummer des Anwendungsprogramms bereitstellt (oder einen anderen eindeutigen Bezeichner bzw. einen geheimen Wert), wenn eine Plug-In-Komponente lizenziert wird. Die Abbildung aus 3 zeigt ein Flussdiagramm zur Erzeugung eines Komponentenpassworts gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. In dem Block 200 lizenziert ein Endverbraucher ein Anwendungsprogramm und erhält einen zugeordneten eindeutigen Bezeichner, wie etwa eine Anwendungslizenznummer von dem Entwickler oder dem Anbieter bzw. Verkäufer des Anwendungsprogramms. Die Anwendungslizenznummer kann dem Endverbraucher nur erteilt werden, nachdem der Endverbraucher die Lizenzbedingungen für die Software anerkannt und die erforderlichen Zahlungen geleistet hat. In einem Ausführungsbeispiel wird das Anwendungsprogramm über ein Netzwerk (z.B. das Internet) von dem Controller-Computersystem erhalten. Wenn der Endverbraucher in der Folge eine ausgewählte Komponente zur Verwendung in Verbindung mit dem Anwendungsprogramm erhalten möchte, übermittelt der Endverbraucher die Lizenznummer des Anwendungsprogramms an den Steuerungsablauf für die Controller-Sicherheit des Controller-Computersystems in dem Block 202 in Verbindung mit einer Angabe zu der angeforderten Komponente. Diese Übermittlung kann elektronisch erfolgen (wie zum Beispiel über das Internet) oder durch andere Techniken, wie zum Beispiel telefonisch. Als nächstes erzeugt die Controller-Sicherheitssteuerung in dem Block 204 einen verschlüsselten Anwendungsschlüssel unter Verwendung zumindest eines Teils der Anwendungslizenznummer und eines geheimen Verschlüsselungsschlüssels als Eingabedaten. In einem Ausführungsbeispiel wird der Anwendungsschlüssel gemäß der allgemein bekannten Technik Data Encryption Standard (DES) verschlüsselt, wobei jedoch auch andere Verschlüsselungstechniken eingesetzt werden können. Der geheime Verschlüsselungsschlüssel umfasst einen vorbestimmten Datenwert, der dem Steuerungsablauf der Controller-Sicherheit des Controller-Computersystems bekannt ist, während er jedoch keinem Endverbraucher bekannt ist. In Ausführungsbeispielen, welche die DES-Technik oder zwei andere Verschlüsselungstechniken für Schlüssel verwenden, handelt es sich bei dem geheimen Verschlüsselungsschlüssel um einen privaten Schlüssel. Auf diese Weise ist in dem vorliegenden speziellen Ausführungsbeispiel der verschlüsselte Anwendungsschlüssel der speziellen Kopie des Anwendungsprogramms zugeordnet, für das der anfordernde Endverbraucher vorher eine Nutzungsbefugnis erlangt hat. Der Umfang der vorliegenden Erfindung ist natürlich nicht darauf beschränkt.
  • In dem Block 206 erzeugt der Steuerungsablauf der Controller-Sicherheit einen verschlüsselten Komponentenschlüssel unter Verwendung eines eindeutigen Bezeichners für die angeforderte Komponente und den geheimen Verschlüsselungsschlüssel als Eingabedaten. Wie bei der Erzeugung des Anwendungsschlüssels kann der Komponentenschlüssel in einem Ausführungsbeispiel gemäß der allgemein bekannten DES-Technik verschlüsselt werden, wobei aber auch andere Verschlüsselungstechniken eingesetzt werden können. Wenn es sich in einem Ausführungsbeispiel bei der angeforderten Komponente um eine ActiveX-Control handelt, kann als Bezeichner ein Global Unique Identifier (GUID) verwendet werden. Auf diese Weise wird der verschlüsselte Komponentenschlüssel eindeutig einer speziellen Kopie der angeforderten Komponente zugeordnet. In dem Block 208 erzeugt die Steuerung der Controller-Sicherheit ein verschlüsseltes Komponentenpasswort, indem der verschlüsselte Anwendungsschlüssel und der verschlüsselte Komponentenschlüssel kombiniert werden und die resultierende Kombination verschlüsselt wird. In einem Ausführungsbeispiel wird wiederum die DES-Verschlüsselungstechnik verwendet, wobei aber auch andere Verschlüsselungstechniken ebenso verwendet werden können.
  • Das Komponentenpasswort stellt jetzt die Kombination der Bezeichner für das lizenzierte Anwendungsprogramm und die angeforderte Komponente dar. Die Abbildung aus 4 zeigt ein Blockdiagramm einer Kombination von Datenobjekten, die bei der Erzeugung eines Komponentenpassworts gemäß einem Ausführungsbeispiel der vorliegenden Erfindung verwendet wird. Die durch den Endverbraucher bereitgestellte Anwendungslizenznummer 230 wird unter Verwendung des geheimen Verschlüsselungsschlüssels 232 verschlüsselt, so dass der Produktanwendungsschlüssel 234 erzeugt wird. In ähnlicher Weise wird der Komponentenbezeichner (ID) 236 mit dem geheimen Verschlüsselungsschlüssel 232 verschlüsselt, so dass der Komponentenschlüssel 238 erzeugt wird. Der Anwendungsschlüssel und der Komponentenschlüssel werden danach mit dem geheimen Verschlüsselungsschlüssel verschlüsselt, so dass das Komponentenpasswort 240 erzeugt wird. In einem weiteren Ausführungsbeispiel können andere bzw. unterschiedliche Verschlüsselungsschlüssel verwendet werden, um den Anwendungsschlüssel, den Komponentenschlüssel und das Komponentenpasswort zu erzeugen.
  • In einem weiteren Ausführungsbeispiel der vorliegenden Erfindung kann die Erzeugung des Komponentenpassworts vereinfacht werden. In dem vorliegenden Ausführungsbeispiel kann zumindest ein teil der Anwendungslizenznummer 230 mit der Komponenten-ID 236 kombiniert werden, so dass das Komponentenpasswort gebildet wird. In diesem Fall erzeugt das Controller-Computersystem das Komponentenpasswort durch Verschlüsselung der ganzen oder teilweisen Anwendungslizenznummer 230 unter Verwendung der eindeutigen Komponenten-ID 236 als Schlüssel an Stelle des Verschlüsselungsschlüssels 232. Jede einer Vielzahl von anderen Kombinationstechniken kann ebenfalls gemäß dem Umfang der vorliegenden Erfindung verwendet werden.
  • Das Komponentenpasswort kann danach durch den Steuerungsablauf für die Controller-Sicherheit in dem Block 210 aus 3 an den Endverbraucher zurückgegeben werden. In bestimmten Ausführungsbeispielen kann diese Übermittlung die vollständige Erfüllung einer Zahlungsverpflichtung zur Auflage haben. Die angeforderte Komponente kann dann durch jede zur Verfügung stehende Technik (z.B. über das Internet) zu dem Endverbraucher-Computersystem übertragen werden. Das Komponentenpasswort kann zum Beispiel als eine in die angeforderte Komponente integrierte Datei zu dem Endverbraucher übertragen werden. Auf diese Weise muss der Endverbraucher das Komponentenpasswort weder in das Endverbraucher-Computersystem eingegeben, noch muss der Endverbraucher das Komponentenpasswort kennen.
  • Wenn der Endbenutzer bzw. der Endverbraucher die angeforderte Komponente empfängt, kann die Komponente in der Registry bzw. die Registrierdatenbank 20 zur Verwendung in Verbindung mit dem Anwendungsprogramm 12 registriert werden. Die Abbildung aus 5 zeigt ein Flussdiagramm der Registrierung und Authentifizierung einer Komponente gemäß Ausführungsbeispielen der vorliegenden Erfindung. Diese Operationen bzw. Abläufe werden durch die Anwendungssicherheitssteuerung 22 ausgeführt, die Teil des Anwendungsprogramms 12 aus 1 sein kann, wobei die vorliegende Erfindung jedoch diesbezüglich nicht beschränkt ist. In dem Block 260 leitet der Endbenutzer die Registrierung einer Komponente bei dem Anwendungsprogramm ein. Wenn ein Endverbraucher-Computersystem eine Komponente empfängt, kann die Komponente in einem komprimierten oder „gepackten" Format vorhanden sein, wobei die vorliegende Erfindung jedoch diesbezüglich nicht beschränkt ist. Der Endbenutzer entkomprimiert bzw. „entpackt2 daraufhin die gepackte Komponente. Die Komponente kann in Form einer selbst extrahierenden Zip-Datei (die sich selbst entpackt) gegeben sein, oder der Endverbraucher kann ein „Entpacker"-Programm zum Dekomprimieren der Komponente ausführen. Sobald die Komponente dekomprimiert bzw. entpackt ist, kann der Endbenutzer einen Setup- oder Installationsprozess ausführen, um die Komponenten auf dem Computersystem des Endbenutzers zu installieren, wobei der Umfang der vorliegenden Erfindung jedoch diesbezüglich nicht beschränkt ist. In Ausführungsbeispielen der vorliegenden Erfindung umfasst dies einen Einsetz- bzw. Plug-In-Vorgang (wie etwa einen Prozeduraufruf der ActiveX-Snap-In-Klasse). Als nächstes ermittelt die Komponente in dem Block 262 im Rahmen des Snap-In-Vorgangs das Komponentenpasswort und speichert es in der Registry bzw. der Registrierdatenbank. Hiermit wird festgestellt, dass das Komponentenpasswort in dem vorliegenden Ausführungsbeispiel zum Zeitpunkt der Registrierung in der Registrierdatenbank platziert wird und nicht zum Zeitpunkt der Ausführung des Anwendungsprogramms, wobei die vorliegende Erfindung diesbezüglich jedoch nicht beschränkt ist. Die Komponente speichert in dem vorliegenden Ausführungsbeispiel ferner den Global Unique Identifier (GUID) der Komponente in der Registrierdatenbank. Wenn das Komponentenpasswort in einem Ausführungsbeispiel in einer Text- oder anderen Datei gespeichert ist, die vorher in Verbindung mit der Komponente zu dem Computersystem des Endbenutzers übertragen worden ist, so liest die Komponente die Datei, um das Komponentenpasswort zu ermitteln. In einem anderen Ausführungsbeispiel kann der Endbenutzer aufgefordert werden, das Komponentenpasswort über herkömmliche Eingabetechniken für Computersysteme (z.B. ein Dialogfenster einer Benutzeroberfläche) einzugeben. Wenn kein Komponentenpasswort ermittelt wird, kann die Komponente in jedem Fall dem Endbenutzer einen Fehler anzeigen und den Betrieb einstellen. Alternativ kann ein weiterer Betrieb der Komponente auch ohne ein gültiges Komponentenpasswort zugelassen werden. In ähnlicher Weise sind in anderen Ausführungsbeispielen andere Maßnahmen möglich.
  • Das Anwendungsprogramm versuch in dem Block 264 die Komponente einzusetzen. Wenn das Anwendungsprogramm ausgeführt wird, integriert es registrierte Komponenten. Dies unterscheidet sich von dem Registrierungsverfahren, da ein dem vorliegenden speziellen Ausführungsbeispiel eine Komponente zuerst registriert wird, bevor sie in ein Anwendungsprogramm integriert bzw. eingesetzt wird. Das Anwendungsprogramm kann die die Snap-In-Operationen beim Starten der Anwendung ausführen oder „fliegend" bzw. während der Ausführung des Anwendungsprogramms nach neuen Komponenten suchen. In dem Block 266 liest das Anwendungsprogramm das Komponentenpasswort für die Komponente aus der Registrierdatenbank. Wenn das Komponentenpasswort für die Komponente nicht in der Registrierdatenbank vorhanden ist, so kann dem Endbenutzer ein Fehlersignal bereitgestellt und die Snap-In-Verarbeitung eingestellt werden. Das Komponentenpasswort wird in der Registrierdatenbank als der Komponente zugehörig durch den Global Unique Identifier (GUID) der Komponente identifiziert. Sobald das Anwendungsprogramm das Komponentenpasswort kennt, verwendet das Anwendungsprogramm in dem Block 268 dessen Lizenznummer (integriert in das Anwendungsprogramm) und den eindeutigen Bezeichner der Komponente (aus der Registrierdatenbank abgerufen), um unter Verwendung der vorstehend in Bezug auf die Abbildungen der 3 und 4 beschriebenen Technik und des geheimen Verschlüsselungsschlüssels ein Passwort zu erzeugen. Der geheime Verschlüsselungsschlüssel kann durch den Softwareentwickler in das Anwendungsprogramm „hart codiert" oder voreingestellt werden, wobei der Umfang der vorliegenden Erfindung diesbezüglich jedoch nicht beschränkt ist.
  • In dem Block 270 vergleicht das Anwendungsprogramm das von ihm erzeugte Passwort mit dem aus der Registrierdatenbank abgerufenen Komponentenpasswort. Wenn das Komponentenpasswort mit dem erzeugten Passwort übereinstimmt, so vollendet das Anwendungsprogramm den Snap-In-Prozess und lässt die Nutzung der Komponente in dem Block 272 zu. Wenn das Komponentenpasswort nicht mit dem erzeugten Passwort übereinstimmt, ist die Komponente nicht für den Betrieb in Verbindung mit dem Anwendungsprogramm registriert. In diesem Fall wird der Nutzungsfehler in dem Block 274 behandelt. Die Fehlerbehandlung kann das Entfernen der Komponente von dem Computersystem des Endbenutzers sowie das Löschen der Komponenteninformationen aus der Registrierdatenbank und das Übermitteln einer Nachricht an den Endverbraucher umfassen, in welcher der Benutzer aufgefordert wird, eine Lizenz für die Komponente zu erwerben.
  • Ausführungsbeispiele der vorliegenden Erfindung ermöglichen es Softwareentwicklern, Abschnitte von Anwendungsprogrammen als Komponenten zu strukturieren und die Anwendungsprogramme und Komponenten auf eine Vielzahl von Methoden zu vermarkten. Bei einem Ansatz können das Anwendungsprogramm und alle zugeordneten Snap-In-Komponenten gemeinsam vermarktet und lizenziert werden, wobei das Komponentenpasswort in diesem Fall zum Zeitpunkt der Installation des Anwendungsprogramms erzeugt werden kann. In diesem Beispiel können alle Komponenten unmittelbar nach der Installation autorisiert und betrieben werden. Bei einem anderen Ansatz weist das Anwendungsprogramm anfänglich keine Snap-In-Komponenten auf, und alle oder jede der Komponenten können separat vermarktet und lizenziert werden. Der einzige Unterschied zwischen den Anwendungsprogrammversionen liegt in diesen Fällen in dem integrierten Installationsprogramm. Bei den Ausführungsbeispielen der vorliegenden Erfindung gibt es keine weiteren Auswirkungen auf die Anwendungsprogrammtestverläufe oder die Programmentwicklung.
  • Die Ausführungsbeispiele der vorliegenden Erfindung verringern ferner die Wahrscheinlichkeit für die Erzeugung illegaler bzw. unrechtmäßiger Kopien der Komponenten eines Softwareentwicklers. Im Falle von lizenzierter Netzwerksoftware kann ein Endverbraucher bzw. ein Endbenutzer zahlreiche Client-Systemanwendungen mit der gleichen Lizenznummer aufweisen, und unter Umständen noch viel mehr Client-Systemanwendungen, die jeweils eine andere Lizenznummer aufweisen. Die Ausführungsbeispiele der vorliegenden Erfindung führen zu dem Ergebnis, dass Benutzer eine Komponente für jede Lizenznummer in ihrem Besitz erwerben sollten. Ohne diesen Mechanismus könnten sie eine Komponente erwerben und diese auf all ihren Computersystemen installieren, was zu einem Umsatzverlust auf Seiten des Softwareentwicklers führen würde.

Claims (11)

  1. Verfahren zum Erzeugen eines Passworts zur Steuerung der Nutzung einer ausgewählten Kopie einer Software-Plug-In-Komponente durch eine ausgewählte Kopie eines autorisierten Anwendungsprogramms auf einem ausgewählten Computerprogramm, wobei das Verfahren folgendes umfasst: das Erzeugen eines ersten Schlüssels aus einem Bezeichner der ausgewählten Kopie des autorisierten Anwendungsprogramms; das Erzeugen eines zweiten Schlüssels aus einem Bezeichner der ausgewählten Kopie der Software-Plug-In-Komponente; und das Erzeugen des Passworts aus den ersten und zweiten Schlüsseln durch Verschlüsselung einer Kombination des ersten Schlüssels und des zweiten Schlüssels mit einem geheimen Verschlüsselungsschlüssel, wodurch die autorisierte Nutzung der ausgewählten Kopie der Software-Plug-In-Komponente an die ausgewählte Kopie des autorisierten Anwendungsprogramms auf dem ausgewählten Computersystem gebunden wird.
  2. Verfahren nach Anspruch 1, wobei das Erzeugen des ersten Schlüssels das Verschlüsseln zumindest eines Teils des Anwendungsprogrammbezeichners mit einem geheimen Verschlüsselungsschlüssel umfasst.
  3. Verfahren nach Anspruch 1, wobei das Erzeugen des zweiten Schlüssels das Verschlüsseln zumindest eines Teils des Komponentenbezeichners mit einem geheimen Verschlüsselungsschlüssel umfasst.
  4. Maschinenlesbares Speichermedium, das Befehle speichert, die, wenn sie ausgeführt werden, bewirken, dass ein Computersystem ein Passwort zur Steuerung der Nutzung einer ausgewählten Kopie einer Software-Plug-In-Komponente durch eine ausgewählte Kopie eines autorisierten Anwendungsprogramms auf einem ausgewählten Computersystem erzeugt, indem ein erster Schlüssel aus einem Bezeichner der der ausgewählten Kopie des autorisierten Anwendungsprogramms, ein zweiter Schlüssel von einem Bezeichner der ausgewählten Kopie der Software-Plug-In-Komponente und das Passwort aus den ersten und zweiten Schlüsseln erzeugt werden, indem eine Kombination aus dem ersten Schlüssel und dem zweiten Schlüssel mit einem geheimen Verschlüsselungsschlüssel verschlüsselt wird, wodurch die autorisierte Nutzung der ausgewählten Kopie der Software-Plug-In-Komponente an die ausgewählte Kopie des autorisierten Anwendungsprogramms auf dem ausgewählten Computersystem gebunden wird.
  5. Verfahren zur Steuerung der Nutzung einer Softwarekomponente in Verbindung mit dem Anwendungsprogramm in einem System, bei dem ein Endverbraucher-Computersystem mit einem Controller-Computersystem gekoppelt ist, wobei das Endverbraucher-Computersystem ein durch einen Bezeichner bezeichnetes Anwendungsprogramm aufweist, wobei das Verfahren folgendes umfasst: das Ermitteln des Anwendungsprogrammbezeichners durch das Controller-Computersystem; das Erzeugen eines ersten Passworts aus dem Anwendungsprogrammbezeichner und einem Bezeichner der Komponente; das Übermitteln der Komponente, des Komponentenbezeichners und des ersten Passworts von dem Controller-Computersystem an das Endverbraucher-Computersystem; das Speichern des Komponentenbezeichners und des ersten Passworts in einer Registrierdatenbank des Anwendungsprogramms in dem Endverbraucher-Computerprogramm; das Erzeugen eines zweiten Passworts aus dem Anwendungsprogrammbezeichner und dem Komponentenbezeichner aus der Registrierdatenbank durch das Anwendungsprogramm; das Vergleichen des ersten Passworts aus der Registrierdatenbank mit dem zweiten Passwort; und das Zulassen der Nutzung der Komponente in Verbindung mit dem Anwendungsprogramm durch das Endverbraucher-Computersystem, wenn das erste Passwort mit dem zweiten Passwort übereinstimmt.
  6. Verfahren nach Anspruch 5, wobei das Erzeugen des zweiten Passworts folgendes umfasst: das Erzeugen eines ersten Schlüssels aus dem Anwendungsprogrammbezeichner; das Erzeugen eines zweiten Schlüssels aus dem empfangenen Komponentenbezeichner; und das Erzeugen des zweiten Passworts aus den ersten und zweiten Schlüsseln.
  7. Verfahren nach Anspruch 6, wobei das Erzeugen des ersten Schlüssels das Verschlüsseln zumindest eines Teils des Anwendungsprogrammbezeichners mit einem geheimen Verschlüsselungsschlüssel umfasst.
  8. Verfahren nach Anspruch 6, wobei das Erzeugen des zweiten Schlüssels das Verschlüsseln zumindest eines Teils des Komponentenbezeichners mit einem geheimen Verschlüsselungsschlüssel umfasst.
  9. Verfahren nach Anspruch 6, wobei das Erzeugen des zweiten Passworts das Verschlüsseln einer Kombination aus dem ersten Schlüssel und dem zweiten Schlüssel mit einem geheimen Verschlüsselungsschlüssel umfasst.
  10. Verfahren nach Anspruch 5, wobei das Erzeugen des zweiten Passworts das Verschlüsseln zumindest eines Teils des Anwendungsprogrammbezeichners mit dem Komponentenbezeichner als einem Verschlüsselungsschlüssel umfasst.
  11. Computerprogramm, das eine Computerprogrammcodeeinrichtung umfasst, die alle Schritte aus Anspruch 1 ausführen kann, wenn das Programm auf einem Computer ausgeführt wird.
DE69927022T 1998-06-05 1999-05-19 Verfahren zur steuerung der benutzung von softwarekomponenten Expired - Lifetime DE69927022T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/092,632 US6363486B1 (en) 1998-06-05 1998-06-05 Method of controlling usage of software components
US92632 1998-06-05
PCT/US1999/011106 WO1999063707A1 (en) 1998-06-05 1999-05-19 Method of controlling usage of software components

Publications (2)

Publication Number Publication Date
DE69927022D1 DE69927022D1 (de) 2005-10-06
DE69927022T2 true DE69927022T2 (de) 2006-06-29

Family

ID=22234251

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69927022T Expired - Lifetime DE69927022T2 (de) 1998-06-05 1999-05-19 Verfahren zur steuerung der benutzung von softwarekomponenten

Country Status (6)

Country Link
US (1) US6363486B1 (de)
EP (1) EP1084549B1 (de)
AU (1) AU4005499A (de)
CA (1) CA2333613C (de)
DE (1) DE69927022T2 (de)
WO (1) WO1999063707A1 (de)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117644A1 (en) * 1998-06-04 2004-06-17 Z4 Technologies, Inc. Method for reducing unauthorized use of software/digital content including self-activating/self-authenticating software/digital content
US20040117664A1 (en) * 1998-06-04 2004-06-17 Z4 Technologies, Inc. Apparatus for establishing a connectivity platform for digital rights management
US6044471A (en) 1998-06-04 2000-03-28 Z4 Technologies, Inc. Method and apparatus for securing software to reduce unauthorized use
US20040107368A1 (en) * 1998-06-04 2004-06-03 Z4 Technologies, Inc. Method for digital rights management including self activating/self authentication software
US6986063B2 (en) * 1998-06-04 2006-01-10 Z4 Technologies, Inc. Method for monitoring software using encryption including digital signatures/certificates
US20040117628A1 (en) * 1998-06-04 2004-06-17 Z4 Technologies, Inc. Computer readable storage medium for enhancing license compliance of software/digital content including self-activating/self-authenticating software/digital content
US20040117631A1 (en) * 1998-06-04 2004-06-17 Z4 Technologies, Inc. Method for digital rights management including user/publisher connectivity interface
US7139915B2 (en) * 1998-10-26 2006-11-21 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US7174457B1 (en) * 1999-03-10 2007-02-06 Microsoft Corporation System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party
US6813640B1 (en) * 1998-12-08 2004-11-02 Macrovision Corporation System and method for controlling the editing by user action of digital objects created in a document server application
US20030208641A1 (en) * 1999-03-09 2003-11-06 Wesemann Darren L. Software components as virtual processors
US6775779B1 (en) * 1999-04-06 2004-08-10 Microsoft Corporation Hierarchical trusted code for content protection in computers
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6874087B1 (en) * 1999-07-13 2005-03-29 International Business Machines Corporation Integrity checking an executable module and associated protected service provider module
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7865442B1 (en) * 1999-10-15 2011-01-04 Invensys Systems, Inc. Distributing and billing software according to customer use of program modules
US6490723B1 (en) * 1999-11-30 2002-12-03 Dell Products L.P. Method and system for installing files in a computing system
US6757824B1 (en) 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US6879988B2 (en) 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US8230482B2 (en) * 2000-03-09 2012-07-24 Pkware, Inc. System and method for manipulating and managing computer archive files
US20050015608A1 (en) 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
US8959582B2 (en) 2000-03-09 2015-02-17 Pkware, Inc. System and method for manipulating and managing computer archive files
US6386894B2 (en) * 2000-04-28 2002-05-14 Texas Instruments Incorporated Versatile interconnection scheme for beverage quality and control sensors
US7076468B2 (en) * 2000-04-28 2006-07-11 Hillegass James C Method and system for licensing digital works
US7024696B1 (en) 2000-06-14 2006-04-04 Reuben Bahar Method and system for prevention of piracy of a given software application via a communications network
AU7593601A (en) * 2000-07-14 2002-01-30 Atabok Inc Controlling and managing digital assets
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US20030046668A1 (en) * 2001-01-29 2003-03-06 Matt Bowen System, method and article of manufacture for distributing IP cores
US7062650B2 (en) * 2001-09-28 2006-06-13 Intel Corporation System and method for verifying integrity of system with multiple components
JP2003122537A (ja) * 2001-10-15 2003-04-25 Minolta Co Ltd ライセンス管理装置及び同管理システム
US7137004B2 (en) * 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7159240B2 (en) 2001-11-16 2007-01-02 Microsoft Corporation Operating system upgrades in a trusted operating system environment
US7243230B2 (en) * 2001-11-16 2007-07-10 Microsoft Corporation Transferring application secrets in a trusted operating system environment
US7313705B2 (en) * 2002-01-22 2007-12-25 Texas Instrument Incorporated Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
US7480806B2 (en) * 2002-02-22 2009-01-20 Intel Corporation Multi-token seal and unseal
US7890771B2 (en) * 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
CA2383825A1 (en) * 2002-04-24 2003-10-24 Ibm Canada Limited-Ibm Canada Limitee Dynamic configuration and self-tuning of inter-nodal communication resources in a database management system
CA2384181A1 (en) * 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee System and method for manipulating a registry
CN101699505B (zh) 2003-04-25 2016-02-17 苹果公司 一种基于网络的媒体系统
US9406068B2 (en) 2003-04-25 2016-08-02 Apple Inc. Method and system for submitting media for network-based purchase and distribution
US20050071656A1 (en) * 2003-09-25 2005-03-31 Klein Dean A. Secure processor-based system and method
US7681046B1 (en) 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7844548B2 (en) * 2003-10-15 2010-11-30 Apple Inc. Techniques and systems for electronic submission of media for network-based distribution
US7694151B1 (en) 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US20050125254A1 (en) * 2003-12-03 2005-06-09 Roy Schoenberg Key maintenance method and system
US7392523B1 (en) * 2004-06-01 2008-06-24 Symantec Corporation Systems and methods for distributing objects
TWI241818B (en) * 2004-06-10 2005-10-11 Ind Tech Res Inst Application-based data encryption system and method thereof
DE102005014273B4 (de) * 2005-03-24 2012-04-05 Dspace Digital Signal Processing And Control Engineering Gmbh Vergleich von Schnittstellen zwischen Softwarekomponenten
US20070016770A1 (en) * 2005-07-18 2007-01-18 Dell Products L.P. System and method for managing the initiation of software programs in an information handling system
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
US7827162B2 (en) * 2006-05-15 2010-11-02 Apple Inc. Media package format for submission to a media distribution system
US7962634B2 (en) 2006-05-15 2011-06-14 Apple Inc. Submission of metadata content and media content to a media distribution system
US8015237B2 (en) * 2006-05-15 2011-09-06 Apple Inc. Processing of metadata content and media content received by a media distribution system
US20070265969A1 (en) * 2006-05-15 2007-11-15 Apple Computer, Inc. Computerized management of media distribution agreements
US7996787B2 (en) * 2007-02-06 2011-08-09 Cptn Holdings Llc Plug-in architecture for window management and desktop compositing effects
EP2223256A1 (de) * 2007-11-17 2010-09-01 Uniloc Usa, Inc. System und verfahren zur anpassbaren lizenzierung digitaler produkte
US9076176B2 (en) 2008-05-05 2015-07-07 Apple Inc. Electronic submission of application programs for network-based distribution
US10255580B2 (en) 2008-05-05 2019-04-09 Apple Inc. Network-based distribution of application products
US9342287B2 (en) 2008-05-05 2016-05-17 Apple Inc. Software program ratings
US20090307683A1 (en) * 2008-06-08 2009-12-10 Sam Gharabally Network-Based Update of Application Programs
JP5599557B2 (ja) * 2008-08-29 2014-10-01 株式会社リコー 情報処理装置、ライセンス判定方法、プログラム及び記録媒体
US20100088690A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Replacing the identity of an activex control
US20100235254A1 (en) * 2009-03-16 2010-09-16 Payam Mirrashidi Application Products with In-Application Subsequent Feature Access Using Network-Based Distribution System
US20100235889A1 (en) * 2009-03-16 2010-09-16 Michael Kuohao Chu Application products with in-application subsequent feature access using network-based distribution system
US20100299219A1 (en) * 2009-05-25 2010-11-25 Cortes Ricardo D Configuration and Management of Add-ons to Digital Application Programs for Network-Based Distribution
US20100325431A1 (en) * 2009-06-19 2010-12-23 Joseph Martin Mordetsky Feature-Specific Keys for Executable Code
US9633183B2 (en) 2009-06-19 2017-04-25 Uniloc Luxembourg S.A. Modular software protection
US8423473B2 (en) * 2009-06-19 2013-04-16 Uniloc Luxembourg S. A. Systems and methods for game activation
US20100324983A1 (en) * 2009-06-22 2010-12-23 Etchegoyen Craig S System and Method for Media Distribution
US9729609B2 (en) * 2009-08-07 2017-08-08 Apple Inc. Automatic transport discovery for media submission
US8935217B2 (en) * 2009-09-08 2015-01-13 Apple Inc. Digital asset validation prior to submission for network-based distribution
US8549314B2 (en) 2010-04-29 2013-10-01 King Saud University Password generation methods and systems
WO2012068614A1 (en) * 2010-11-22 2012-05-31 Lockerteck Pty Ltd A system and method for providing an application lock
EP2506174B1 (de) 2011-03-30 2019-01-09 Irdeto B.V. Aktivierung einer softwareanwendung, die auf einer hardwarevorrichtung ausgeführt werden soll
US9203624B2 (en) 2012-06-04 2015-12-01 Apple Inc. Authentication and notification heuristics
US8990188B2 (en) 2012-11-30 2015-03-24 Apple Inc. Managed assessment of submitted digital content
US9087341B2 (en) 2013-01-11 2015-07-21 Apple Inc. Migration of feedback data to equivalent digital assets
US9912555B2 (en) 2013-03-15 2018-03-06 A10 Networks, Inc. System and method of updating modules for application or content identification
US9722918B2 (en) 2013-03-15 2017-08-01 A10 Networks, Inc. System and method for customizing the identification of application or content type
WO2014176461A1 (en) 2013-04-25 2014-10-30 A10 Networks, Inc. Systems and methods for network access control
US9294503B2 (en) 2013-08-26 2016-03-22 A10 Networks, Inc. Health monitor based distributed denial of service attack mitigation
US9756071B1 (en) 2014-09-16 2017-09-05 A10 Networks, Inc. DNS denial of service attack protection
US9537886B1 (en) 2014-10-23 2017-01-03 A10 Networks, Inc. Flagging security threats in web service requests
US20160132317A1 (en) 2014-11-06 2016-05-12 Intertrust Technologies Corporation Secure Application Distribution Systems and Methods
US9621575B1 (en) 2014-12-29 2017-04-11 A10 Networks, Inc. Context aware threat protection
US9584318B1 (en) 2014-12-30 2017-02-28 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack defense
US9900343B1 (en) 2015-01-05 2018-02-20 A10 Networks, Inc. Distributed denial of service cellular signaling
US9848013B1 (en) 2015-02-05 2017-12-19 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack detection
US10063591B1 (en) 2015-02-14 2018-08-28 A10 Networks, Inc. Implementing and optimizing secure socket layer intercept
US9787581B2 (en) 2015-09-21 2017-10-10 A10 Networks, Inc. Secure data flow open information analytics
US10505984B2 (en) 2015-12-08 2019-12-10 A10 Networks, Inc. Exchange of control information between secure socket layer gateways
US10469594B2 (en) 2015-12-08 2019-11-05 A10 Networks, Inc. Implementation of secure socket layer intercept
US10116634B2 (en) 2016-06-28 2018-10-30 A10 Networks, Inc. Intercepting secure session upon receipt of untrusted certificate
US10158666B2 (en) 2016-07-26 2018-12-18 A10 Networks, Inc. Mitigating TCP SYN DDoS attacks using TCP reset

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4471163A (en) * 1981-10-05 1984-09-11 Donald Thomas C Software protection system
US5287408A (en) * 1992-08-31 1994-02-15 Autodesk, Inc. Apparatus and method for serializing and validating copies of computer software
IL110891A (en) * 1993-09-14 1999-03-12 Spyrus System and method for controlling access to data
US5542045A (en) * 1993-10-15 1996-07-30 Software Security, Inc. Method for interposing a security function in a computer program
US5394469A (en) * 1994-02-18 1995-02-28 Infosafe Systems, Inc. Method and apparatus for retrieving secure information from mass storage media
US5819091A (en) 1994-12-22 1998-10-06 Arendt; James Wendell User level control of degree of client-side processing
US5652793A (en) * 1995-05-08 1997-07-29 Nvidia Corporation Method and apparatus for authenticating the use of software
US5721779A (en) * 1995-08-28 1998-02-24 Funk Software, Inc. Apparatus and methods for verifying the identity of a party
US5694469A (en) * 1995-11-17 1997-12-02 Le Rue; Charles Method and system for disseminating stored programs and data
US5708709A (en) 1995-12-08 1998-01-13 Sun Microsystems, Inc. System and method for managing try-and-buy usage of application programs
US5818936A (en) 1996-03-15 1998-10-06 Novell, Inc. System and method for automically authenticating a user in a distributed network system
US5887065A (en) * 1996-03-22 1999-03-23 Activcard System and method for user authentication having clock synchronization
US5790663A (en) 1996-03-28 1998-08-04 Advanced Micro Devices, Inc. Method and apparatus for software access to a microprocessor serial number
US5774544A (en) * 1996-03-28 1998-06-30 Advanced Micro Devices, Inc. Method an apparatus for encrypting and decrypting microprocessor serial numbers
US5784460A (en) * 1996-10-10 1998-07-21 Protocall Technolgies, Inc. Secured electronic information delivery system having a three-tier structure
US5892905A (en) 1996-12-23 1999-04-06 International Business Machines Corporation Computer apparatus and method for providing a common user interface for software applications accessed via the world-wide web
US6073122A (en) * 1997-08-15 2000-06-06 Lucent Technologies Inc. Cryptographic method and apparatus for restricting access to transmitted programming content using extended headers

Also Published As

Publication number Publication date
EP1084549B1 (de) 2005-08-31
EP1084549A4 (de) 2002-11-13
US6363486B1 (en) 2002-03-26
CA2333613C (en) 2005-02-01
CA2333613A1 (en) 1999-12-09
DE69927022D1 (de) 2005-10-06
WO1999063707A8 (en) 2000-03-16
AU4005499A (en) 1999-12-20
EP1084549A1 (de) 2001-03-21
WO1999063707A1 (en) 1999-12-09

Similar Documents

Publication Publication Date Title
DE69927022T2 (de) Verfahren zur steuerung der benutzung von softwarekomponenten
DE69630751T2 (de) Lizenzanzeigesystem
DE60218996T3 (de) Verfahren und vorrichtung zur einrichtung von benutzungsrechten für in der zukunft zu erzeugenden digitalen inhalt
DE60313368T2 (de) Verfahren und Server zum Aktualisieren von Software
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE69531082T2 (de) Verfahren und Vorrichtung mit einem Verschlüsselungskopfteil, die es ermöglicht, Software zu erproben
DE69926970T2 (de) Selbstschützende Dokumente
DE60016972T2 (de) Anpassbarer sicherheitsmechanismus, um unerlaubten zugang zu digitalen daten zu verhindern
DE69531077T2 (de) Verfahren und Vorrichtung mit Benutzereinwirkung der Art Erproben-und-Kaufen, die es ermöglicht, Software zu erproben
DE60037476T2 (de) Verfahren und Gerät zur Verhinderung der unberechtigten Benutzung von Multimediainhalt
DE60218393T2 (de) Verbindungsloses Lizenzübertragungs- und Verteilungssystem
DE69812276T2 (de) Verfahren zur Sicherung der Konfigurationsparameter von Software mittels digitaler Signaturen
DE69636982T2 (de) Softwarekopiersystem
DE60302844T2 (de) Halbleitervorrichtung mit Verschlüsselung, Halbleitervorrichtung mit externer Schnittstelle, und Inhaltswiedergabeverfahren
DE60119326T2 (de) Systeme und verfahren zur integritätszertifikation und verifikation von inhaltsverbrauchsumgebungen
DE60128909T2 (de) System und eingebetteter lizenzsteuerungsmechanismus für die erzeugung und verteilung von dateien mit digitalem inhalt sowie erzwingung von lizenziertem gebrauch von dateien mit digitalem inhalt
DE112007002566B4 (de) Verfahren zum Übertragen eines Datenobjekts zwischen Vorrichtungen, und Vorrichtung zum Durchsetzen eines Protokolls
DE102005001124A1 (de) Bereitstellung und Verwendung von Sicherheitstoken, um eine automatisierte Testausrüstung freizugeben
DE112013007160T5 (de) Entwicklungsumgebungssystem, Entwicklungsumgebungsvorrichtung, Entwicklungsumgebungsbereitstellungsverfahren und Programm
EP2492839A1 (de) Verfahren und System zum Authentifizieren eines Benutzers
EP2823429B1 (de) Pc absicherung durch bios/(u) efi erweiterungen
EP1184771A1 (de) Verfahren zum Schutz von Computer-Software und/oder computerlesbaren Daten sowie Schutzgerät
DE60112227T2 (de) Verfahren und vorrichtung zur sicheren datenverteilung
EP1271310B1 (de) Verfahren zum Erweitern einer mittels eines Installationsprogramms zu installierenden Anwendung um eine Funktion und Computerprogrammprodukt
DE10244728A1 (de) System und Verfahren zum Schutz von Daten, die auf einer Speicherungsmedienvorrichtung gespeichert sind

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806