-
ALLGEMEINER STAND DER TECHNIK
-
1. Gebiet
-
Die vorliegende Erfindung betrifft generell die Computersicherheit, und insbesondere das sichere Verteilen kryptographischer Schlüssel an Vorrichtungen in Verarbeitungssystemen.
-
2. Beschreibung
-
Einige Verarbeitungssystemarchitekturen, die Inhaltsschutz- und/oder Computersicherheitsfunktionen unterstützen, verlangen, daß besonders geschützte oder „vertrauenswürdige” Softwaremodule dazu in der Lage sind, eine authentifizierte, verschlüsselte Kommunikationssitzung mit besonders geschützten oder „vertrauenswürdigen” Hardwarevorrichtungen in dem Verarbeitungssystem (wie z. B. Graphiksteuerungskarten) zu herzustellen. Ein üblicherweise benutztes Verfahren sowohl zum Identifizieren der Vorrichtung als auch zum gleichzeitigen Herstellen der verschlüsselten Kommunikationssitzung besteht darin, einen einseitig authentifizierten Diffie-Hellman-(DH)-Schlüsselaustauschprozeß zu benutzen. In diesem Prozeß wird der Vorrichtung ein eindeutiges Rivest-Shamir-und-Adleman-(RSA)-Algorithmus-Schlüsselpaar oder ein eindeutiges ECC-(Elliptic Curve Cryptography – Elliptische Kurvenkryptographie)-Schlüsselpaar zugewiesen. Da jedoch dieser Authentifizierungsprozeß RSA- oder ECC-Schlüssel benutzt, weist die Vorrichtung dann eine eindeutige und belegbare Identität auf, was Anlaß zur Sorge um die Privatsphäre bereiten kann. Im schlimmsten Fall kann diese Besorgnis zu mangelnder Unterstützung durch Originalausrüstungshersteller beim Fertigen vertrauenswürdiger Vorrichtungen führen, die diese Art von Sicherheit bereitstellen.
-
US 2004/0103281 A1 beschreibt ein Verfahren zur Authentifizierung einer vertrauenswürdigen Vorrichtung ohne eine Offenlegung der Identität der Vorrichtung.
-
WO 99/31842 A1 beschreibt einen Ansatz zur dynamischen und sicheren Verteilung von Schlüsseln über ein Netzwerk, welche zum Entschlüsseln von z. B. Medieninhalten verwendet werden können. Hierzu identifiziert sich ein Client bei einem zentralen Server, der die gewünschten Schlüssel ermittelt und in einem Modul integriert, das Schutz gegen unberechtigte Eingriffe bietet. Dieses Modul wird an die Client-Vorrichtung übertragen und dort ausgeführt. Das Modul liefert nun die für die Entschlüsselung benötigten Schlüssel direkt an einen vertrauenswürdigen Entschlüsselungsprozess.
-
Kurze Beschreibung der Figuren
-
Die Merkmale und Vorteile der vorliegenden Erfindung werden anhand der folgenden detaillierten Beschreibung der vorliegenden Erfindung deutlich, wobei:
-
1 ein System zeigt, das eine Plattform aufweist, die mit einem TPM-(Trusted Platform Module – Vertrauenswürdiges Plattformmodul) implementiert ist, das gemäß einer Ausführungsform der Erfindung arbeitet;
-
2 eine erste Ausführungsform der Plattform mit dem TPM aus 1 zeigt;
-
3 eine zweite Ausführungsform der Plattform mit dem TPM aus 1 zeigt;
-
4 ein Ausführungsbeispiel eines Computersystems zeigt, das mit dem TPM aus 2 implementiert ist;
-
5 eine Darstellung eines Systems zum Verteilen von Direct-Proof-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung ist;
-
6 ein Ablaufdiagramm ist, das Stufen eines Verfahrens zum Verteilen von Direct-Proof-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
-
7 ein Ablaufdiagramm ist, das eine Einrichtungsverarbeitung bei der Vorrichtungsherstellung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
-
8 ein Ablaufdiagramm ist, das die Produktionsverarbeitung bei der Vorrichtungsherstellung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
-
9 ein Ablaufdiagramm einer Einrichtungsverarbeitung bei einem Clientcomputersystem gemäß einer Ausführungsform der Erfindung ist; und
-
10 ein Ablaufdiagramm einer Produktionsverarbeitung bei einem Clientcomputersystem gemäß einer Ausführungsform der Erfindung ist.
-
DETAILLIERTE BESCHREIBUNG
-
Die Benutzung eines Direct-Proof-basierten Diffie-Hellman-Schlüsselaustauschprotokolls, um es geschützten/vertrauenswürdigen Vorrichtungen zu erlauben, sich zu authentifizieren und eine verschlüsselte Kommunikationssitzung mit vertrauenswürdigen Softwaremodulen herzustellen, vermeidet das Erzeugen von eindeutiger Identitätsinformation in dem Verarbeitungssystem. Allerdings ist bei der direkten Einbettung eines Direct-Proof-Privatschlüssels an einer Fertigungsstraße mehr geschützter, nichtflüchtiger Speicher auf der Vorrichtung erforderlich als bei anderen Ansätzen, was die Gerätekosten in die Höhe treibt. Eine Ausführungsform der vorliegenden Erfindung ist ein Verfahren, das es dem Direct-Proof-Privatschlüssel (der z. B. zum Signieren benutzt wird) erlaubt, in einer sicheren Weise auf einem Verteiler-Compact-Disk-Lesespeicher (CD-ROM) geliefert zu werden, und anschließend von der Vorrichtung selbst in der Vorrichtung installiert zu werden. Das in dieser Erfindung vorgestellte Verfahren ist so ausgelegt, daß die Vorrichtung keine Identitätsinformation für den Installationsprozeß offenlegen muß. In einer Ausführungsform kann die Reduzierung an Vorrichtungsspeicher, der zum Unterstützen dieser Möglichkeit erforderlich ist, bei etwa 300 bis 700 Bytes bis zu etwa 20 Bytes liegen. Diese Reduzierung der Menge an nichtflüchtigem Speicher, der zum Implementieren des Direct-Proof-basierten Diffie-Hellman-Schlüsselaustauschs für Vorrichtungen benötigt wird, kann zu einer breiteren Anwendung dieses Verfahrens führen. In der Beschreibung bedeutet die Bezugnahme auf „eine Ausführungsform” der vorliegenden Erfindung, daß ein bestimmtes Merkmal, eine Struktur oder ein Kennzeichen, die oder das im Zusammenhang mit dieser Ausführungsform beschrieben ist, in wenigstens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Das Erscheinen des Ausdrucks „in einer Ausführungsform” an verschiedenen Stellen der Beschreibung bezieht sich also nicht unbedingt auf dieselbe Ausführungsform.
-
In der folgenden Beschreibung wird eine bestimmte Terminologie verwendet, um bestimmte Merkmale von einer oder mehreren Ausführungsformen der Erfindung zu beschreiben. Beispielsweise ist „Plattform” als jede Art von Kommunikationsgerät definiert, das dazu angepaßt ist, Information zu senden und zu empfangen. Beispiele verschiedener Plattformen sind, ohne Begrenzung oder Beschränkung darauf, Computersysteme, persönliche digitale Assistenten, Mobiltelefone, Set-Top-Boxen, Faxgeräte, Drucker, Modems, Router und ähnliches. Eine „Kommunikationsverbindung” ist im breiten Sinne als ein oder mehrere informationstragende Medien definiert, die an eine Plattform angepaßt sind. Beispiele für verschiedene Arten von Kommunikationsverbindungen sind, ohne Begrenzung oder Beschränkung darauf, elektrische(r) Draht/Drähte, Lichtwellenleiter, Kabel, Bus-Trace(s) oder drahtlose Signalisierungstechnologie.
-
Ein „Herausforderer” bezeichnet eine Einheit (z. B. eine Person, ein System, eine Software und/oder eine Vorrichtung), die eine Verifizierung oder Authentifizierung oder Autorisierung von einer anderen Einheit verlangt. Normalerweise wird dies vor dem Offenlegen oder Bereitstellen der angeforderten Information durchgeführt. Ein „Beantworter” bezeichnet jede Einheit, von der verlangt wurde, einen Beweis ihrer Autorisierung, Gültigkeit und/oder Identität bereitzustellen. Ein „Vorrichtungshersteller”, der austauschbar ist mit „zulassendem Hersteller”, bezeichnet eine Einheit, die eine Plattform oder ein Gerät herstellt oder konfiguriert.
-
Wie hier benutzt, bedeutet das „Überzeugen” eines Herausforderers oder das „Beweisen” gegenüber einem Herausforderer, daß ein Beantworter über Kenntnisse von kryptographischer Information (z. B. einer digitalen Signatur, einem Geheimnis wie z. B. einem Schlüssel) verfügt, daß, basierend auf der Information und dem Beweis, der gegenüber dem Herausforderer offengelegt wird, eine hohe Wahrscheinlichkeit vorliegt, daß der Beantworter über die kryptographische Information verfügt. Um dies einem „Herausforderer” zu beweisen, ohne die kryptographische Information gegenüber dem Herausforderer zu „enthüllen” oder zu „offenbaren”, bedeutet, daß es, basierend auf der Information, die von dem Herausforderer offenbart wird, rechnerisch unmöglich für den Herausforderer wäre, die kryptographische Information zu bestimmen.
-
Solche Beweise werden im Folgenden als Direct Proofs (Direktbeweise) bezeichnet. Der Begriff „Direct Proof” bezeichnet Zero-Knowledge-Beweise, da diese Arten von Beweisen auf dem Gebiet allgemein bekannt sind. Insbesondere ist ein bestimmtes Direct-Proof-Protokoll, auf das hier Bezug genommen wird, das Thema der Patentanmeldung Seriennummer 10/306,336, eingereicht am 27.11.2002, namens „System and Method for Establishing Trust Without Revealing Identity”, das dem Eigentümer der vorliegenden Erfindung zugeteilt ist. Direct Proof definiert ein Protokoll, wobei ein Aussteller eine Familie mit vielen Mitgliedern festlegt, die gemeinsame Charakteristika teilen, die von dem Aussteller festgelegt werden. Der Aussteller erzeugt ein öffentliches und privates Familienschlüsselpaar (Fpub und Fpri), das die Familie insgesamt repräsentiert. Mit Hilfe von Fpri kann der Aussteller auch einen eindeutigen Direct-Proof-Privatsignaturschlüssel (DPpri) für jedes einzelne Mitglied der Familie erzeugen. Jede Nachricht, die von einem individuellen DPpri signiert wurde, kann mit Hilfe des öffentlichen Familienschlüssels Fpub verifiziert werden. Allerdings ermittelt eine solche Verifizierung nur, daß der Signierende ein Mitglied der Familie ist; es wird keine eindeutig identifizierende Information zu dem individuellen Mitglied offengelegt. In einer Ausführungsform kann der Aussteller ein Gerätehersteller oder ein Beauftragter sein. Das heißt, der Aussteller kann eine Einheit sein, die dazu in der Lage ist, anhand gemeinsamer Charakteristika Vorrichtungsfamilien zu definieren, das Öffentlich/Privat-Familienschlüsselpaar zu erzeugen, und DP-Privatschlüssel zu erzeugen und in Vorrichtungen einzubringen. Der Aussteller kann auch Zertifikate für den öffentlichen Familienschlüssel erzeugen, die die Herkunft des Schlüssels und die Kennzeichen der Vorrichtungsfamilie identifizieren.
-
Bezugnehmend auf 1 ist eine Ausführungsform eines Systems gezeigt, das eine Plattform aufweist, die mit einer vertrauenswürdigen Hardwarevorrichtung (bezeichnet als „TPM” oder „Trusted Platform Module” – Vertrauenwürdiges Plattformmodul) implementiert ist, das gemäß einer Ausführungsform der Erfindung arbeitet. Eine erste Plattform 102 (Herausforderer) überträgt eine Anfrage 106 dazu, daß eine zweite Plattform 104 (Beantworter) Information über sich selbst bereitstellt. In Antwort auf die Anfrage 106 stellt die zweite Plattform 104 die verlangte Information 108 bereit.
-
Zusätzlich kann es sein, daß die erste Plattform 102 für eine erhöhte Sicherheit prüfen muß, daß die verlangte Information 108 von einer Vorrichtung gekommen ist, die entweder von einem ausgewählten Vorrichtungshersteller oder einer ausgewählten Gruppe von Vorrichtungsherstellern (im Folgenden als „Vorrichtungshersteller” 110 bezeichnet) hergestellt wurde. Beispielsweise fordert in einer ersten Ausführungsform der Erfindung die erste Plattform 102 die zweite Plattform 104 heraus, zu zeigen, daß sie über kryptographische Information (z. B. eine Signatur) verfügt, die von dem/den Vorrichtungshersteller(n) 110 erzeugt wurde. Die Herausforderung kann entweder in der Anfrage 106 enthalten sein (wie dargestellt), oder in einer separaten Übertragung. Die zweite Plattform 104 antwortet auf die Herausforderung, indem sie Information in Form einer Antwort bereitstellt, um die erste Plattform 102 zu überzeugen, daß die zweite Plattform 104 über kryptographische Information verfügt, die von dem/den Vorrichtungshersteller(n) 110 erzeugt wurde, ohne die kryptographische Information zu enthüllen. Die Antwort kann entweder Teil der verlangten Information 108 sein (wie dargestellt), oder eine separate Übertragung.
-
In einer Ausführungsform der Erfindung umfaßt die zweite Plattform 104 ein Trusted Platform Module (TPM – Vertrauenswürdiges Plattformmodul) 115. TPM 115 ist eine kryptographische Vorrichtung, die von dem/den Vorrichtungshersteller(n) 110 hergestellt wurde. In einer Ausführungsform der Erfindung umfaßt TPM 115 einen Prozessor mit einer geringen Menge an Chipspeicher, der in einem Paket verkapselt ist. TPM 115 ist dazu konfiguriert, Information an die erste Plattform 102 bereitzustellen, die diese in die Lage versetzt, zu bestimmen, daß eine Antwort von einem gültigen TPM übertragen wird. Die benutzte Information ist Inhalt, der es wahrscheinlich macht, daß die Identität des TPM oder der zweiten Plattform bestimmbar wird.
-
2 zeigt eine erste Ausführungsform der zweiten Plattform 104 mit TPM 115. Für diese Ausführungsform der Erfindung umfaßt die zweite Plattform 104 einen Prozessor 202, der an TPM 115 gekoppelt ist. Im allgemeinen ist der Prozessor 202 eine Vorrichtung, die Information verarbeitet. Beispielsweise kann der Prozessor 202 in einer Ausführungsform der Erfindung als ein Mikroprozessor, ein Digitalsignalprozessor, eine Mikrosteuerung oder sogar ein Zustandsapparat implementiert sein. Alternativ kann der Prozessor 202 in einer anderen Ausführungsform der Erfindung als eine programmierbare oder hartcodierte Logik implementiert sein, wie z. B. als feldprogrammierbare Gate-Arrays (FPGAs), Transistor-Transistor-Logik (TTL), oder sogar als ein anwendungsspezifischer integrierter Schaltkreis (ASIC).
-
Hier umfaßt die zweite Plattform 104 außerdem eine Speichereinheit 206, um die Speicherung kryptographischer Information zuzulassen, wie z. B. eine oder mehrere der folgenden: Schlüssel, Streuwerte, Signaturen, Zertifikate usw. Ein Streuwert von „X” kann als „Streu(X)” dargestellt werden. Es ist vorgesehen, daß diese Information in dem internen Speicher 220 von TPM 115 anstelle der Speichereinheit 206 gespeichert ist, wie in 3 gezeigt. Die kryptographische Information kann verschlüsselt sein, insbesondere wenn sie außerhalb von TPM 115 gespeichert ist.
-
4 zeigt eine Ausführungsform einer Plattform mit einem Computersystem 300, das mit dem TPM 115 aus 2 implementiert ist. Computersystem 300 umfaßt einen Bus 302 und einen Prozessor 310, der an Bus 302 gekoppelt ist. Das Computersystem 300 umfaßt außerdem eine Hauptspeichereinheit 304 und eine statische Speichereinheit 306.
-
Hier ist die Hauptspeichereinheit 304 ein flüchtiger Halbleiterspeicher zum Speichern von Information und Befehlen, die von Prozessor 310 ausgeführt werden. Der Hauptspeicher 304 kann auch dazu benutzt werden, vorläufige Variablen oder andere unmittelbare Information während der Ausführung von Befehlen durch Prozessor 310 zu speichern. Die statische Speichereinheit 306 ist ein nichtflüchtiger Halbleiterspeicher, um Information und Befehle für den Prozessor 310 dauerhafter zu speichern. Ein Beispiel eines statischen Speichers 306 ist ein Lesespeicher (ROM), ohne Beschränkung oder Begrenzung darauf. Sowohl die Hauptspeichereinheit 304 als auch die statische Speichereinheit 306 sind an Bus 302 gekoppelt.
-
In einer Ausführungsform der Erfindung umfaßt das Computersystem 300 außerdem eine Datenspeichervorrichtung 308, wie z. B. eine magnetische Platte oder eine optische Platte, deren zugehöriges Laufwerk zum Speichern von Information und Befehlen auch an Computersystem 300 gekoppelt sein kann.
-
Computersystem 300 kann auch über Bus 302 an eine Graphiksteuerungsvorrichtung 314 gekoppelt sein, die eine Anzeige (nicht dargestellt) wie z. B. eine Kathodenstrahlröhre (KSR), eine Flüssigkristallanzeige (LCD) oder einen beliebigen Flachbildmonitor steuert, um Information für einen Endnutzer anzuzeigen. In einer Ausführungsform kann es erwünscht sein, daß die Graphiksteuerung dazu in der Lage ist, eine authentifizierte verschlüsselte Kommunikationssitzung mit einem Softwaremodul herzustellen, das von dem Prozessor ausgeführt wird.
-
Typischerweise kann eine alphanumerische Eingabevorrichtung 316 (z. B. Tastatur, Tastenfeld usw.) an den Bus 302 gekoppelt sein, um Information und/oder eine Befehlauswahl an den Prozessor 310 zu übertragen. Ein anderer Typ von Nutzereingabevorrichtung ist eine Cursorsteuereinheit 318, wie z. B. eine Maus, ein Trackball, ein integriertes Berührungsfeld, ein Taststift oder Cursorlenktasten, um Richtungsinformation und eine Befehlauswahl an den Prozessor 310 zu übertragen, und die Cursorbewegung auf der Anzeige 314 zu steuern.
-
Eine Kommunikationsschnittstelleneinheit 320 ist ebenfalls an den Bus 302 gekoppelt. Beispiele für eine Schnittstelleneinheit 320 sind ein Modem, eine Netzwerkschnittstellenkarte, oder andere gut bekannte Schnittstellen, die benutzt werden, um eine Kommunikationsverbindung anzuschließen, die einen Teil eines lokalen oder Weitverkehrsnetzwerks bildet. Auf diese Weise kann das Computersystem 300 über eine konventionelle Netzwerkinfrastruktur, wie z. B. das Intranet eines Unternehmens und/oder das Internet, an eine Anzahl von Clients und/oder Servern gekoppelt sein.
-
Man wird verstehen, daß bei bestimmten Implementierungen ein geringer oder besser ausgestattetes Computersystem als das oben beschriebene wünschenswert sein kann. Deshalb variiert die Konfigurierung des Computersystems 300 von Implementierung zu Implementierung in Abhängigkeit von zahlreichen Faktoren, wie z. B. Preisbeschränkungen, Leistungsanforderungen, technischen Verbesserungen, und/oder anderen Umständen.
-
In wenigstens einer Ausführungsform kann das Computersystem 300 die Benutzung besonders geschützter „vertrauenswürdiger” Softwaremodule (z. B. manipulationssicherer Software oder Systeme, die dazu in der Lage sind, geschützte Programme ablaufen zu lassen) unterstützen, die im Hauptspeicher 304 und/oder in der Massenspeichervorrichtung 308 gespeichert sind, und von dem Prozessor 310 ausgeführt werden, um spezifische Aktivitäten durchzuführen, auch in Anwesenheit von anderer feindlicher Software im System. Einige dieser vertrauenswürdigen Softwaremodule benötigen einen „vertrauenswürdigen” geschützten Zugriff, nicht nur auf eine andere Plattform, sondern auf eine oder mehrere Peripherievorrichtungen auf derselben Plattform, wie z. B. die Graphiksteuerung 314. Im allgemeinen verlangt ein solcher Zugriff, daß das vertrauenswürdige Softwaremodul dazu in der Lage ist, die Fähigkeiten und/oder die spezifische Identität der Vorrichtung zu identifizieren, und dann eine verschlüsselte Sitzung mit der Vorrichtung herzustellen, um den Austausch von Daten zu ermöglichen, die nicht von anderer Software im System erschnüffelt oder manipuliert werden können.
-
Ein Verfahren des Stands der Technik, um sowohl die Vorrichtung zu identifizieren, als auch gleichzeitig die verschlüsselte Sitzung herzustellen, ist es, einen einseitigen authentifizierten Diffie-Hellman-(DH)-Schlüsselaustauschprozeß zu benutzen. In diesem Prozeß wird der Vorrichtung ein eindeutiges Öffentlich/Privat-RSA- oder ECC-Schlüsselpaar zugewiesen. Die Vorrichtung enthält und schützt den Privatschlüssel, während der öffentliche Schlüssel an das Softwaremodul freigegeben werden kann. Während des DH-Schlüsselaustauschprozesses signiert die Vorrichtung mit Hilfe ihres Privatschlüssels eine Nachricht, die das Softwaremodul mit Hilfe des entsprechenden öffentlichen Schlüssels verifizieren kann. Dies erlaubt es dem Softwaremodul, zu authentifizieren, daß die Nachricht tatsächlich von der relevanten Vorrichtung stammt.
-
Da jedoch dieser Authentifizierungsprozeß RSA- oder ECC-Schlüssel umfaßt, weist das Gerät eine eindeutige und belegbare Identität auf. Jedes Softwaremodul, das die Vorrichtung dazu bringen kann, eine Nachricht mit ihrem privaten Schlüssel zu signieren, kann beweisen, daß diese spezifische eindeutige Vorrichtung in dem Computersystem anwesend ist. Angesichts der Tatsache, daß Vorrichtungen sich selten zwischen Verarbeitungssystemen bewegen, stellt dies auch eine belegbare eindeutige Computersystemidentität dar. Außerdem stellt der öffentliche Schlüssel der Vorrichtung selbst einen konstanten eindeutigen Wert dar; im Effekt ein permanentes „Cookie”. In einigen Fällen können diese Charakteristika als ein signifikantes Privatsphärenproblem betrachtet werden.
-
Ein alternativer Ansatz ist in der Patentanmeldung Seriennummer 10/999,576, eingereicht am 30.11.2004, namens „Apparatus and Method for Establishing a Secure Session with a Device Without Exposing Privacy-Sensitive Information”, erteilt an den Eigentümer der vorliegenden Anmeldung, beschrieben. In diesem Ansatz wird die Benutzung von RSA- oder ECC-Schlüsseln in dem einseitig authentifizierten Diffie-Hellman-Prozeß durch Direct-Proof-Schlüssel ersetzt. Eine Vorrichtung, die diesen Ansatz benutzt, kann als zu einer spezifischen Vorrichtungsfamilie zugehörig authentifiziert werden, was Versicherungen zum Verhalten oder zur Vertrauenswürdigkeit der Vorrichtung mit einschließen kann. Der Ansatz gibt keine eindeutig identifizierende Information frei, die benutzt werden könnte, um eine eindeutige Identität aufzustellen, die das Verarbeitungssystem darstellt.
-
Obwohl der Ansatz gut funktioniert, benötigt er zusätzlichen Speicher in der Vorrichtung, um den Direct-Proof-Privatschlüssel aufzunehmen, der größer sein kann als ein RSA- oder ECC-Schlüssel. Um die Belastung durch diesen zusätzlichen Speicherbedarf zu senken, definieren Ausführungsformen der vorliegenden Erfindung ein System und einen Prozeß, um sicherzustellen, daß die Vorrichtung über den Direct-Proof-Privatschlüssel verfügt, wenn sie den Schlüssel benötigt, ohne daß eine wesentliche Menge zusätzlichen Speichers in der Vorrichtung benötigt wird.
-
In wenigstens einer Ausführungsform der vorliegenden Erfindung speichert ein Vorrichtungshersteller an der Fertigungsstraße nur eine pseudozufällige 128-Bit-Zahl in einer Vorrichtung, wobei ein wesentlich größerer Direct-Proof-Privatschlüssel (DPpri) unter Benutzung einer Verteiler-CD verschlüsselt und geliefert werden kann. Andere Ausführungsformen können eine Zahl in der Vorrichtung speichern, die länger oder kürzer als 128 Bits ist. Dieser Prozeß stellt sicher, daß nur eine spezifizierte Vorrichtung ihren zugewiesenen DPpri-Schlüssel entschlüsseln und benutzen kann. 5 ist eine Darstellung eines Systems 500 zum Verteilen von Direct-Proof-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung. In dem System liegen drei Einheiten vor, ein geschütztes Vorrichtungsherstellungssystem 502, ein Vorrichtungsherstellungs-Produktionssystem 503, und ein Clientcomputersystem 504. Das geschützte Vorrichtungsherstellungssystem umfaßt ein Verarbeitungssystem, das im Einrichtungsprozeß vor dem Herstellen einer Vorrichtung 506 benutzt wird. Das geschützte System 502 kann von einem Vorrichtungshersteller so betrieben werden, daß das geschützte System vor einem Angriff durch Hacker außerhalb des Vorrichtungsherstellungsstandorts geschützt ist (z. B. in einem geschlossenen System). Das Herstellungsproduktionssystem 503 kann bei der Herstellung der Vorrichtungen benutzt werden. In einer Ausführungsform können das geschützte System und das Produktionssystem dasselbe System sein. Die Vorrichtung 506 umfaßt jede Hardwarevorrichtung, die in das Clientcomputersystem aufzunehmen ist (z. B. eine Speichersteuerung, eine Peripherievorrichtung wie z. B. eine Graphiksteuerung, ein E/A-Vorrichtung usw.). In Ausführungsformen der vorliegenden Erfindung umfaßt die Vorrichtung einen pseudozufälligen Wert RAND 508, der in einem nichtflüchtigen Speicher der Vorrichtung gespeichert ist.
-
Das geschützte Herstellungssystem beinhaltet eine geschützte Datenbank 510 und eine Erzeugungsfunktion 512. Die geschützte Datenbank umfaßt eine Datenstruktur, um eine Vielzahl pseudozufälliger Werte zu speichern (wenigstens so viele, wie herzustellende Vorrichtungen vorliegen), die von der Erzeugungsfunktion 512 in einer unten beschriebenen Weise erzeugt werden. Die Erzeugungsfunktion umfaßt Logik (entweder in Software oder Hardware implementiert) zum Erzeugen einer Datenstruktur, die hier als Keyblob 514 bezeichnet wird. Der Keyblob 514 umfaßt wenigstens drei Datenobjekte. Ein eindeutiger Direct-Proof-Privatschlüssel (DPpri) umfaßt einen kryptographischen Schlüssel, der von einer Vorrichtung zum Signieren benutzt werden kann. Der DP-Privat-Digest 516 (dppri-Digest) umfaßt einen Nachrichten-Digest, wie z. B. SHA-1. Einige Ausführungsformen können einen pseudozufälligen Initialisierungsvektor (IV) 518 beinhalten, der zu Kompatibilitätszwecken einen Bitstrom als Teil des Keyblobs umfaßt. Wenn für die Verschlüsselung ein Stromchiffre benutzt wird, dann wird der IV in einem gut bekannten Verfahren zum Benutzen eines IV in einem Stromchiffre benutzt. Wenn für die Verschlüsselung ein Blockchiffre benutzt wird, wird der IV als Teil der zu verschlüsselnden Nachricht benutzt, was jede Instanz der Verschlüsselung unterschiedlich gestaltet.
-
In Ausführungsformen der vorliegenden Erfindung erzeugt das geschützte Herstellungssystem einen oder mehrere Keyblobs (wie weiter unten im Detail beschrieben), und speichert die Keyblobs in einer Keyblob-Datenbank 520 auf einer CD 522. In einer Ausführungsform können sich auf einer einzigen CD viele Keyblobs befinden, wobei die Speicherbegrenzung der CD die einzige Beschränkung ist. Die CD wird dann über typische physikalische Kanäle an Computersystemhersteller, Computerhändler, Verbraucher und andere verteilt. Obwohl hier eine CD als das Speichermedium beschrieben ist, kann jedes geeignete entnehmbare Speichermedium benutzt werden (z. B. eine DVD (digital versatile disk) oder ein anderes Medium).
-
Ein Clientcomputersystem 504, das ein Direct-Proof-Protokoll zur Authentifizierung und zum Schlüsselaustausch einer Kommunikationssitzung mit Vorrichtung 506 benutzen möchte, die in dem System 504 enthalten ist, kann einen ausgewählten Keyblob 514 aus der Keyblob-Datenbank 520 von der CD ablesen, sobald die CD in ein CDROM-Laufwerk (nicht dargestellt) des Clientcomputersystems eingeführt wurde. Die Keyblob-Daten können von der Vorrichtung benutzt werden, um einen lokalisierten Keyblob 524 zu erzeugen (wie unten beschrieben), der zum Implementieren des Direct-Proof-Protokolls benutzt wird. Eine Vorrichtungstreibersoftware 526 wird von dem Clientcomputersystem ausgeführt, um Vorrichtung 506 zu initialisieren und zu steuern.
-
In Ausführungsformen der vorliegenden Erfindung können vier klar abgegrenzte Operationsstufen vorliegen. 6 ist ein Ablaufdiagramm 600, das Stufen eines Verfahrens zum Verteilen von Direct-Proof-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Gemäß Ausführungsformen der vorliegenden Erfindung können auf jeder Stufe bestimmte Handlungen ausgeführt werden. An einem Standort des Herstellers finden wenigstens zwei Stufen statt: die Einrichtungsstufe 602 und die Herstellungsproduktionsstufe 604.
-
Die Einrichtungsstufe ist hier unter Bezugnahme auf 7 beschrieben. Die Herstellungsproduktionsstufe ist hier unter Bezugnahme auf 8 beschrieben. Am Standort des Verbrauchers, der das Clientcomputersystem besitzt, finden wenigstens zwei Stufen statt: die Einrichtungsstufe 606 und die Benutzungsstufe 608. Die Einrichtungsstufe im Clientcomputersystem ist hier unter Bezugnahme auf 9 beschrieben. Die Benutzungsstufe im Clientcomputersystem ist hier unter Bezugnahme auf 10 beschrieben.
-
7 ist ein Ablaufdiagramm 700, das die Einrichtungsverarbeitung bei der Vorrichtungsherstellung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. In einer Ausführungsform kann ein Vorrichtungshersteller diese Handlungen mit Hilfe eines geschützten Herstellungssystems 502 durchführen. An Block 702 erzeugt der Vorrichtungshersteller ein Direct-Proof-Familienschlüsselpaar (Fpub und Fpri) für jede herzustellende Vorrichtungsklasse. Jede einzelne Vorrichtung weist einen DPpri-Schlüssel auf, so daß eine Signatur, die unter Benutzung von DPpri erzeugt wird, durch Fpub verifiziert werden kann. Eine Klasse von Vorrichtungen kann jede Menge oder Untermenge von Vorrichtungen umfassen, wie z. B. eine ausgewählte Produktlinie (z. B. einen Typ Vorrichtung), oder Untermengen einer Produktlinie, basierend auf Versionsnummer, oder auf anderen Charakteristika der Vorrichtungen. Das Familienschlüsselpaar dient der Benutzung durch die Klasse von Vorrichtungen, für die es erzeugt wurde.
-
Für jede herzustellende Vorrichtung führt die Erzeugungsfunktion 512 des geschützten Herstellungssystems 502 die Blöcke 704 bis 720 durch. Zunächst erzeugt die Erzeugungsfunktion an Block 704 einen eindeutigen pseudozufälligen Wert (RAND) 508. In einer Ausführungsform beträgt die Länge von RAND 128 Bits. In anderen Ausführungsformen können andere Wertgrößen benutzt werden. In einer Ausführungsform können die pseudozufälligen Werte für eine Anzahl von Vorrichtungen im Voraus erzeugt werden. An Block 706 erzeugt die Erzeugungsfunktion unter Benutzung einer Einwegfunktion f, unterstützt durch die Vorrichtung, einen symmetrischen Verschlüsselungsschlüssel SKEY aus dem eindeutigen RAND-Wert (SKEY = f(RAND)). Die Einwegfunktion kann jeder bekannte Algorithmus sein, der zu diesem Zweck geeignet ist (z. B. SHA-1, MGF1, Data Encryption Standard (DES), Triple-DES usw.). An Block 708 erzeugt die Erzeugungsfunktion in einer Ausführungsform eine Kennzeichner-(ID)-Markierung, die benutzt wird, um auf der Verteiler-CD 522 auf den Keyblob 514 dieser Vorrichtung zu verweisen, indem SKEY zum Verschlüsseln eines „Nulleintrags” benutzt wird (z. B. eine kleine Zahl von Null-Bytes) (Vorrichtungs-ID = Verschlüssselung (0..0) mit SKEY). In anderen Ausführungsformen können andere Verfahren zum Erzeugen der Vorrichtungs-ID benutzt werden, oder es können andere Werte von SKEY verschlüsselt werden.
-
Als nächstes erzeugt die Erzeugungsfunktion an Block 710 den DP-Privatsignaturschlüssel DPpri, der mit dem öffentlichen Familienschlüssel (Fpub) der Vorrichtung korreliert. An Block 712 streut die Erzeugungsfunktion DPpri, um unter Benutzung bekannter Verfahren einen DPpri-Digest zu erstellen (z. B. unter Benutzung von SHA-1 oder einem anderen Streuwertalgorithmus). An Block 714 erstellt die Erzeugungsfunktion eine Keyblobl-Datenstruktur für die Vorrichtung. Der Keyblob enthält wenigstens DPpri und DPpri-Digest. In einer Ausführungsform enthält der Keyblob auch einen zufälligen Initialisierungsvektor, der mehrere pseudozufällig erzeugte Bits aufweist. Diese Werte können unter Benutzung von SKEY verschlüsselt werden, um einen verschlüsselten Keyblob 514 zu erstellen. An Block 716 können die Vorrichtungs-ID, die an Block 708 erzeugt wurde, und der verschlüsselte Keyblob 514, der an Block 714 erzeugt wurde, in einem Eintrag in einer Keyblob-Datenbank 520 gespeichert werden, die auf der Verteiler-CD 522 freigegeben wird. In einer Ausführungsform kann der Eintrag in der Keyblob-Datenbank von der Vorrichtungs-ID angezeigt werden. An Block 718 kann der aktuelle RAND-Wert in der geschützten Datenbank 510 gespeichert werden. An Block 720 können SKEY und DPpri gelöscht werden, da sie durch die Vorrichtung im Feld regeneriert werden. Die Erzeugung des DPpri-Digests und die anschließende Verschlüsselung durch SKEY sind so ausgelegt, daß der Inhalt von DPpri nicht durch eine Einheit bestimmt werden kann, die nicht in Besitz von SKEY ist, und so, daß der Inhalt des KeyBlob nicht von einer Einheit verändert werden kann, die nicht in Besitz von SKEY ist, ohne daß dies anschließend von einer Einheit entdeckt wird, die in Besitz von SKEY ist. In anderen Ausführungsformen können andere Verfahren zum Bereitstellen der Geheimhaltung und zum Schutz der Unversehrtheit benutzt werden. In einigen Ausführungsformen kann es sein, daß der Unversehrtheitsschutz nicht erforderlich ist, und es kann ein Verfahren benutzt werden, das nur eine Geheimhaltung bereitstellt. In diesem Fall wäre der Wert von DPpri-Digest nicht nötig.
-
Zu jedem Zeitpunkt nach Block 720 kann an Block 720 die geschützte Datenbank von RAND-Werten sicher in das Herstellungsproduktionssystem 503 geladen werden, das die RAND-Werte während des Herstellungsprozesses in den Vorrichtungen speichert. Nachdem dieser Ladevorgang verifiziert wurde, können die RAND-Werte sicher aus dem geschützten Herstellungssystem 502 gelöscht werden. Zuletzt kann an Block 724 die Keyblob-Datenbank, die mehrere verschlüsselte Keyblobs aufweist, auf eine übliche Verteiler-CD 522 „gebrannt” werden. In einer Ausführungsform kann die CD zusammen mit der Vorrichtung verteilt werden, wobei für jede Vorrichtung ein Keyblob-Datenbankeintrag benutzt wird, wie in dem Vorrichtungs-ID-Feld indexiert. Außerdem weist die CD ein Dienstprogrammsoftwaremodul zur Schlüsselrückholung auf, dessen Benutzung im Folgenden genauer beschrieben werden soll.
-
8 ist ein Ablaufdiagramm 800, das die Produktionsverarbeitung bei der Vorrichtungsherstellung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Während an einer Fertigungsstraße Vorrichtungen hergestellt werden, wählt das Herstellungsproduktionssystem bei Block 802 einen ungenutzten RAND-Wert aus der geschützten Datenbank aus. Der ausgewählte RAND-Wert kann dann in einem nichtflüchtigen Speicher in einer Vorrichtung gespeichert werden. In einer Ausführungsform umfaßt der nichtflüchtige Speicher ein TPM. An Block 804 zerstört das Herstellungsproduktionssystem nach erfolgreicher Speicherung des RAND-Werts jede Aufzeichnung des RAND-Werts der Vorrichtung in der geschützten Datenbank. An diesem Punkt ist die einzige Kopie des RAND-Werts in der Vorrichtung gespeichert.
-
In einer alternativen Ausführungsform kann der RAND-Wert während der Herstellung einer Vorrichtung erzeugt werden, und wird dann an das geschützte Herstellungssystem gesendet, um einen Keyblob zu berechnen.
-
In einer anderen Ausführungsform kann der RAND-Wert auf der Vorrichtung erzeugt werden, und die Vorrichtung und das geschützte Herstellungssystem können in ein Protokoll eintreten, um den DPpri-Schlüssel zu erzeugen, wobei ein Verfahren benutzt wird, das den DPpri-Schlüssel nicht außerhalb des Keyblob offenlegt. Die Vorrichtung leitet die Vorrichtungs-ID und den Keyblob zum Speichern in der geschützten Datenbank 510 an das Herstellungssystem weiter. In diesem Verfahren weist das Herstellungssystem letztlich dieselbe Information (Vorrichtungs-ID, Keyblob) in der geschützten Datenbank auf, kennt jedoch die Werte von RAND oder von DPpri nicht.
-
9 ist ein Ablaufdiagramm 900 einer Einrichtungsverarbeitung bei einem Clientcomputersystem gemäß einer Ausführungsform der vorliegenden Erfindung. Ein Clientcomputersystem kann diese Handlungen als Teil des Systemstarts durchführen. An Block 902 kann das Clientcomputersystem in normaler Weise hochgefahren werden, und ein Vorrichtungstreiber 526 für die Vorrichtung kann in den Hauptspeicher geladen werden. Wenn der Vorrichtungstreiber initialisiert wurde und mit der Ausführung beginnt, bestimmt die Vorrichtung, ob bereits ein verschlüsselter lokalisierter Keyblob 524 in der Massenspeichervorrichtung 308 für Vorrichtung 506 gespeichert ist. Wenn ja, muß keine weitere Einrichtungsverarbeitung durchgeführt werden, und die Einrichtungsverarbeitung endet an Block 906. Wenn nicht, fährt die Einrichtungsverarbeitung an Block 908 fort. An Block 908 veranlaßt der Vorrichtungstreiber die Anzeige der Nachricht an den Nutzer des Clientcomputersystems, und bittet um die Verteiler-CD 522. Wenn die CD vom Computersystem eingelesen wurde, startet der Vorrichtungstreiber die Dienstprogrammsoftware zur Schlüsselrückholung (in 5 nicht gezeigt), die auf der CD gespeichert ist. Dieses Dienstprogramm stellt ein Befehl zum Erhalten des Schlüssels an die Vorrichtung 506 aus, um den Prozeß des DP-Privatschlüsselerhalts von der Vorrichtung einzuleiten.
-
In Antwort darauf benutzt die Vorrichtung an Block 910 ihre Einwegfunktion f, um den symmetrischen Schlüssel SKEY (jetzt zur Benutzung bei der Entschlüsselung) aus dem eingebetteten RAND-Wert 508 zu regenerieren (SKEY = F(RAND)). An Block 912 erzeugt die Vorrichtung dann ihre eindeutige Vorrichtungs-ID-Markierung, indem SKEY benutzt wird, um einen „Nulleintrag” zu verschlüsseln (z. B. eine kleine Anzahl von Null-Bytes) (Vorrichtungs-ID = Verschlüsselung (0..0) mit SKEY). Die Vorrichtung gibt dann die Vorrichtungs-ID an die Dienstprogrammsoftware zur Schlüsselrückholung zurück. An Block 914 durchsucht das Schlüsselrückholungsdienstprogramm die Keyblob-Datenbank 520 auf der CD nach dem Datenbankeintrag, der die passende Vorrichtungs-ID enthält, extrahiert den verschlüsselten Keyblob der Vorrichtung, und überträgt den Keyblob an die Vorrichtung.
-
In einer Ausführungsform antwortet die Vorrichtung, wenn Rogue-Software versucht, ein Schlüsselerhaltsbefehl an die Vorrichtung zu senden, nachdem die Vorrichtung den Keyblob erhalten hat, nicht mit der Vorrichtungs-ID auf die Rogue-Software. Statt dessen gibt die Vorrichtung eine Fehleranzeige zurück. Im Effekt wird die Funktion des Schlüsselerhaltsbefehls deaktiviert, wenn die Vorrichtung über Zugriff auf einen lokalisierten Keyblob verfügt. Auf diese Weise enthüllt die Vorrichtung die eindeutige Vorrichtungs-ID nicht, es sei denn, sie verfügt nicht über den Keyblob.
-
An Block 916 entschlüsselt die Vorrichtung den verschlüsselten Keyblob unter Benutzung des symmetrischen Schlüssels SKEY, um DPpri und DPpri-Digest zu erhalten, und speichert diese Werte in ihrem nichtflüchtigen Speicher (Entschlüsselter Keyblob = Entschlüsselung (IV, DPpri, DPpri-Digest) mit SKEY). Der Initialisierungsvektor (IV) kann verworfen werden. An Block 918 prüft die Vorrichtung dann die Unversehrtheit von DPpri durch Streuen von DPpri und durch Vergleichen des Ergebnisses mit DPpri-Digest. Wenn der Vergleich gut ist, akzeptiert die Vorrichtung DPpri als ihren gültigen Schlüssel. Die Vorrichtung kann auch einen Schlüsselerhalten-Bitschalter auf wahr setzen, um anzuzeigen, daß der DP-Privatschlüssel erfolgreich erhalten wurde. An Block 920 wählt die Vorrichtung einen neuen IV, und erzeugt einen neuen verschlüsselten lokalisierten Keyblob, unter Benutzung des neuen IV (Lokalisierter Keyblob = Verschlüsselung (IV2, DPpri, DPpri-Digest) mit SKEY). Der neue verschlüsselte lokalisierte Keyblob kann an das Dienstprogramm zur Schlüsselrückholung zurückgegeben werden. An Block 922 speichert das Dienstprogramm zur Schlüsselrückholung den verschlüsselten, lokalisierten Keyblob im Speicher in dem Clientcomputersystem (wie z. B. in der Massenspeichervorrichtung 308). Der DPpri der Vorrichtung ist nun sicher im Clientcomputersystem gespeichert.
-
Sobald die Vorrichtung während der Einrichtungsverarbeitung DPpri erhalten hat, kann die Vorrichtung dann DPpri benutzen. 10 ist ein Ablaufdiagramm einer Clientcomputersystemverarbeitung gemäß einer Ausführungsform der vorliegenden Erfindung. Das Clientcomputersystem kann diese Handlungen jederzeit nach Abschluß der Einrichtung durchführen. An Block 1002 kann das Clientcomputersystem auf normale Weise hochgefahren werden, und ein Vorrichtungstreiber 526 für die Vorrichtung kann in den Hauptspeicher geladen werden. Wenn der Vorrichtungstreiber initialisiert ist und mit der Ausführung beginnt, bestimmt der Vorrichtungstreiber, ob bereits ein verschlüsselter lokalisierter Keyblob 524 in der Massenspeichervorrichtung 308 für Vorrichtung 506 gespeichert ist. Wenn ein verschlüsselter lokalisierter Keyblob für diese Vorrichtung verfügbar ist, fährt die Verarbeitung an Block 1006 fort. An Block 1006 holt der Vorrichtungstreiber den verschlüsselten lokalisierten Keyblob zurück, und überträgt den Keyblob an die Vorrichtung. In einer Ausführungsform kann die Übertragung des Keyblob durch Ausführen eines Keyblob-Ladebefehls erreicht werden.
-
An Block 1008 benutzt die Vorrichtung ihre Einwegfunktion f, um den symmetrischen Schlüssel SKEY (der nun zur Entschlüsselung benutzt wird) aus dem eingebetteten RAND-Wert 508 zu regenerieren (SKEY = f(RAND)). An Block 1010 entschlüsselt die Vorrichtung den verschlüsselten lokalisierten Keyblob unter Benutzung des symmetrischen Schlüssels SKEY, um DPpri und DPpri-Digest zu erhalten, und speichert diese Werte in ihrem nichtflüchtigen Speicher (Entschlüsselter Keyblob = Entschlüsselung (IV2, DPpri, DPpri-Digest) mit SKEY). Der zweite Initialisierungsvektor (IV2) kann verworfen werden. An Block 1012 prüft die Vorrichtung die Unversehrtheit von DPpri durch Streuen von DPpri und durch Vergleichen des Ergebnisses mit DPpri-Digest. Wenn der Vergleich gut ist (z. B. wenn die Digests übereinstimmen), akzeptiert die Vorrichtung DPpri als den zuvor erhaltenen gültigen Schlüssel, und aktiviert ihn zur Benutzung. Die Vorrichtung kann auch den Schlüssel-erhalten-Bitschalter auf wahr setzen, um anzuzeigen, daß der DP-Privatschlüssel erfolgreich erhalten wurde. An Block 1014 wählt die Vorrichtung einen weiteren IV, und erzeugt einen neuen lokalisierten Keyblob, unter Benutzung des neuen IV (Lokalisierter Keyblob = Verschlüsselung (IV3, DPpri, DPpri-Digest) mit SKEY). Der neue verschlüsselte lokalisierte Keyblob kann an das Dienstprogramm zur Schlüsselrückholung zurückgegeben werden. An Block 1016 speichert das Dienstprogramm zur Schlüsselrückholung den verschlüsselten, lokalisierten Keyblob im Speicher im Clientcomputersystem (wie z. B. der Massenspeichervorrichtung 308). Der DPpri der Vorrichtung ist nun wieder sicher in dem Clientcomputersystem gespeichert.
-
In einer Ausführungsform der vorliegenden Erfindung ist es nicht nötig, alle DP-Privatschlüssel der Vorrichtung zugleich zu erzeugen. Unter der Annahme, daß die Verteiler-CD regelmäßig aktualisiert wird, können die DP-Privatschlüssel der Vorrichtung nach Bedarf stoßweise erzeugt werden. Jedesmal, wenn eine Verteiler-CD „gebrannt” wird, enthält sie die zum aktuellen Zeitpunkt erzeugte Keyblob-Datenbank, einschließlich derjenigen Vorrichtungsschlüssel, die bereits erzeugt wurden, aber den Vorrichtungen noch nicht zugeordnet wurden.
-
Obwohl die hier erörterten Operationen als ein sequentieller Prozeß beschrieben werden können, können einige der Operationen tatsächlich parallel oder aufeinander folgend ausgeführt werden. Außerdem kann in einigen Ausführungsformen die Abfolge der Operationen umgestellt werden, ohne vom Geist der Erfindung abzuweichen.
-
Die hier beschriebenen Verfahren sind nicht auf eine bestimmte Hardware- oder Softwarekonfigurierung beschränkt; sie können in jeder Rechen- oder Verarbeitungsumgebung Anwendung finden. Die Verfahren können in Hardware, Software oder einer Kombination der beiden implementiert werden. Die Verfahren können in Programmen implementiert werden, die auf programmierbaren Maschinen ausführen, wie z. B. mobilen oder stationären Computer, persönlichen digitalen Assistenten, Set-Top-Boxen, Mobiltelefonen und Pagern, und anderen elektronischen Vorrichtungen, die jeweils einen Prozessor, ein von dem Prozessor lesbares Speichermedium (einschließlich flüchtiger und nichtflüchtiger Speicherelemente), wenigstens eine Eingabevorrichtung, und eine oder mehrere Ausgabevorrichtungen aufweisen. Die Ausgabeinformation kann auf eine oder mehrere Ausgabevorrichtungen angewandt werden. Ein Durchschnittsfachmann wird verstehen, daß die Erfindung mit verschiedenen Computersystemkonfigurierungen praktizierbar ist, darunter Multiprozessorsystemen, Minicomputern, Großrechnern und ähnlichem. Die Erfindung kann auch in verteilten Computerumgebungen praktiziert werden, in denen Aufgaben von entfernten Vorrichtungen durchgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind.
-
Jedes Programm kann in einer verfahrensorientierten oder objektorientierten Programmiersprache der höheren Ebene implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Allerdings können Programme nach Bedarf in Assembler- oder Maschinensprache implementiert sein. Auf jeden Fall kann die Sprache kompiliert oder interpretiert werden.
-
Programmbefehle können dazu benutzt werden, ein allgemeines oder für einen spezifischen Zweck bestimmtes Verarbeitungssystem hervorzurufen, das mit den Befehlen programmiert wird, um die hier beschriebenen Operationen durchzuführen. Alternativ können die Operationen mit spezifischen Hardwarekomponenten durchgeführt werden, die hartverdrahtete Logik zum Durchführen der Operationen enthalten, oder durch jede beliebige Kombination programmierter Computerkomponenten und angepaßter Hardwarekomponenten. Die hier beschriebenen Verfahren können als ein Computerprogrammprodukt bereitgestellt werden, das ein maschinenlesbares Medium beinhalten kann, auf dem Befehle gespeichert sind, die benutzt werden können, um ein Verarbeitungssystem oder eine andere elektronische Vorrichtung zu programmieren, um die Verfahren durchzuführen. Der hier benutzte Begriff „maschinenlesbares Medium” beinhaltet jedes Medium, das dazu in der Lage ist, eine Sequenz von Befehlen zu speichern oder zu codieren, die zur Ausführung durch die Maschine vorgesehen sind, und das die Maschine veranlassen kann, eines der hier beschriebenen Verfahren auszuführen. Der Begriff „maschinenlesbares Medium” beinhaltet entsprechend, ohne Beschränkung darauf, Halbleiterspeicher, optische und magnetische Platten, und eine Trägerwelle, die ein Datensignal codiert. Außerdem ist es auf dem Gebiet üblich, von Software in der einen oder anderen Form (z. B. als Programm, Verfahren, Prozeß, Anwendung, Modul, Logik usw.) als eine Handlung durchführend oder ein Ergebnis verursachend zu sprechen. Derartige Ausdrücke sind lediglich eine verkürzte Art, auszudrücken, daß die Ausführung der Software durch ein Verarbeitungssystem den Prozessor dazu veranlaßt, eine Handlung durchzuführen oder ein Ergebnis zu erzeugen.
-
Obwohl diese Erfindung unter Bezugnahme auf erläuternde Ausführungsformen beschrieben wurde, ist diese Beschreibung nicht in begrenzendem Sinne zu verstehen. Verschiedene Modifikationen veranschaulichender Ausführungsformen, sowie andere Ausführungsformen, die einem Fachmann auf dem Gebiet der Erfindung offensichtlich sind, werden als im Geist und Umfang der Erfindung liegend betrachtet.