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