-
ALLGEMEINER STAND DER TECHNIK
-
1. GEBIET
-
Die
vorliegende Erfindung betrifft im allgemeinen die Computersicherheit
und genauer das sichere Verteilen kryptographischer Schlüssel an
Vorrichtungen in Verarbeitungssystemen.
-
2. BESCHREIBUNG
-
Einige
Verarbeitungssystemarchitekturen, welche Inhaltsschutz- und/oder
Computersicherheitsmerkmale unterstützen, erfordern, daß speziell geschützte oder „vertrauenswürdige” Softwaremodule
eine authentisierte verschlüsselte
Kommunikationssitzung mit spezifisch geschützten oder „vertrauenswürdigen” Hardwarevorrichtungen
in dem Verarbeitungssystem (wie zum Beispiel Grafiksteuerkarten)
erzeugen können.
Ein üblicherweise
angewendetes Verfahren sowohl zum Identifizieren der Vorrichtung
als auch zum gleichzeitigen Erstellen der verschlüsselten
Kommunikationssitzung ist die Benutzung eines einseitig authentisierten
Diffie-Helman(DH)-Schlüsselaustauschprozesses.
In diesem Prozeß wird
der Vorrichtung ein einmaliges öffentliches/privates
Schlüsselpaar
mit Rivest-Shamir-Adelman(RSA)-Algorithmus oder ein einmaliges Schlüsselpaar
mit elliptischer Kurvenkryptographie (ECC) zugewiesen. Da dieser
Authentifizierungsprozeß jedoch
RSA- oder ECC-Schlüssel
benutzt, hat die Vorrichtung eine einmalige und beweisbare Identität, was Datenschutzprobleme
verursachen kann. Im schlimmsten Fall können diese Probleme zu einem Mangel
an Unterstützung
seitens der Hersteller von Originalteilen (OEMs) zum Herstellen
vertrauenswürdiger
Vorrichtungen führen,
welche diese Art Sicherheit bereitstellen.
-
WO 2004/051923 A1 offenbart
ein System und ein Verfahren mit dem einem „Challenger” nachgewiesen
werden kann, dass eine „Prover”-Vorrichtung
von einem Hersteller der Vorrichtung eine Signatur erhalten hat,
ohne dem Challenger die Signatur preiszugeben. Dazu sendet der Challenger
eine Nachricht an die „Prover”-Vorrichtung,
mit der um eine Versicherung der Validität der Vorrichtung nachsucht.
Die „Prover”-Vorrichtung
sendet ein Vorrichtungszertifikat einschließlich einer Zahl n an den Challenger
und erzeugt ein Attestation Identify Key (AIK) Schlüsselpaar
mit einem privaten und öffentlichen
Schlüssel.
Die „Prover”-Vorrichtung erzeugt
einen zufälligen
oder pseudo-zufälligen
Wert h, berechnet damit einen Wert k = h
mmodP
und sendet den berechneten Wert k und den öffentlichen AIK Schlüssel an
den Challenger.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
folgenden ausführlichen Beschreibung
der vorliegenden Erfindung offensichtlich. Es zeigen:
-
1 ein
System, das durch eine Plattform gekennzeichnet ist, die mit einem
vertrauenswürdigen
Plattformmodul (TPM) versehen ist, das gemäß einer Ausführungsform
der Erfindung arbeitet;
-
2 eine
erste Ausführungsform
der Plattform, die das TPM aus 1 aufweist;
-
3 eine
zweite Ausführungsform
der Plattform, die das TPM aus 1 aufweist;
-
4 ein
Ausführungsbeispiel
eines Computersystems, das mit dem TPM aus 2 ausgeführt ist;
-
5 ein
Diagramm eines Systems zum Verteilen von Direktbeweis-Schlüsseln in
signierten Gruppen gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
6 ein
Flußdiagramm,
das Schritte eines Verfahrens zum Verteilen von Direktbeweis-Schlüsseln in
signierten Gruppen gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt;
-
7 und 8 Flußdiagramme,
die eine Herstellungsaufbauverarbeitung der Vorrichtung gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellen;
-
9 ein
Flußdiagramm,
das eine Herstellungsproduktionsverarbeitung der Vorrichtung gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt;
-
10 und 11 Flußdiagramme
einer Aufbauverarbeitung eines Client-Computersystems gemäß einer
Ausführungsform
der vorliegenden Erfindung; und
-
12 ein
Flußdiagramm
der Verarbeitung eines Client-Computersystems gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die
Verwendung des auf Direktbeweis beruhenden Diffie-Helman-Schlüsselaustauschprotokolls,
damit sich geschützte/vertrauenswürdige Vorrichtungen
selbst authentisieren und eine verschlüsselte Kommunikationssitzung
mit vertrauenswürdigen
Softwaremodulen erstellen können,
vermeidet die Erzeugung von einmaliger Identitätsinformation in dem Verarbeitungssystem
und vermeidet dadurch Datenschutzprobleme. Jedoch erfordert die
direkte Einbettung eines privaten Direktbeweis-Schlüssels in eine
Vorrichtung auf einem Herstellungsband mehr geschützten nichtflüchtigen
Speicher auf der Vorrichtung als andere Ansätze, was zu erhöhten Vorrichtungskosten
führt.
Eine Ausführungsform
der vorliegenden Erfindung ist ein Verfahren, das ermöglicht, daß private
Direktbeweis-Schlüssel
(die zum Beispiel zum Signieren benutzt werden) in signierten Gruppen
in sicherer Weise auf einem Verteilungs-Kompaktplatten-Nurlesespeicher
(CD-ROM oder CD) geliefert und nachfolgend in der Vorrichtung von
der Vorrichtung selbst installiert werden. In einer Ausführungsform
kann die Reduzierung des Vorrichtungsspeichers, der zur Unterstützung dieser
Fähigkeit
erforderlich ist, von etwa 300 bis 700 Bytes bis zu etwa 20 bis
25 Bytes betragen. Diese Reduzierung der Menge des nichtflüchtigen
Speichers, die zur Umsetzung des auf Direktbeweis beruhenden Diffie-Helman-Schlüsselaustauschs
für Vorrichtungen
erforderlich ist, kann zu einer breiteren Anwendung dieser Technik
führen.
-
Bezugnahmen
in der Beschreibung auf ”eine Ausführungsform” der vorliegenden
Erfindung bedeuten, daß ein
bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die
in Verbindung mit der Ausführungsform
beschrieben wird, in mindestens einer Ausführungsform der vorliegenden
Erfindung enthalten ist. Folglich bezieht sich das Vorkommen des
Ausdrucks „in
einer Ausführungsform” an verschiedenen
Stellen in der Beschreibung nicht unbedingt auf die gleiche Ausführungsform.
-
In
der folgenden Beschreibung wird eine bestimmte Terminologie benutzt,
um bestimmte Merkmale einer oder mehrerer Ausführungsformen der Erfindung
zu beschreiben. Zum Beispiel wird ”Plattform” als jede beliebige Art von
Kommunikationsvorrichtung definiert, die zum Senden und Empfangen von
Information geeignet ist. Beispiele verschiedener Plattformen schließen ein,
sind jedoch nicht beschränkt
oder eingeschränkt
auf Computersysteme, persönliche
digitale Assistenten, Mobiltelefone, Set-Top-Boxes, Faxgeräte, Drucker,
Modems, Router oder dergleichen. Eine ”Kommunikationsverbindung” wird allgemein
als ein oder mehrere Information tragende Medien definiert, die
an eine Plattform angepaßt
sind. Beispiele verschiedener Arten von Kommunikationsverbindungen
schließen
ein, sind jedoch nicht beschränkt
oder eingeschränkt
auf einen elektrischen Draht oder elektrische Drähte, optische Faser(n), Kabel,
Busablaufverfolgung(en) oder drahtlose Signalisierungstechnologie.
-
Ein ”Herausfordernder” (Challenger)
bezieht sich auf jede beliebige Entität (zum Beispiel Person, Plattform,
System, Software und/oder Vorrichtung), die eine Verifizierung der
Authentizität
oder Berechtigung einer anderen Entität anfordert. Im Normalfall wird
dies vor dem Offenbaren oder Bereitstellen der angeforderten Information
ausgeführt.
Ein ”Antwortender” (Responder)
bezieht sich auf jede beliebige Entität, die aufgefordert worden
ist, einen Beweis ihrer Berechtigung, Gültigkeit und/oder Identität bereitzustellen.
Der Ausdruck „Vorrichtungshersteller”, der mit „bescheinigender
Hersteller” austauschbar
benutzt werden kann, bezieht sich auf jede beliebige Entität, die eine
Plattform oder Vorrichtung herstellt oder konfiguriert.
-
Wie
hier verwendet, bedeutet einem Herausfordernden ”beweisen” oder einen Herausfordernden davon ”überzeugen”, daß ein Antwortsender
eine gewisse kryptographische Information (zum Beispiel digitale
Signatur, ein Geheimnis wie einen Schlüssel usw.) besitzt oder kennt,
daß basierend
auf der dem Herausfordernden offenbarten Information und Nachweis
eine hohe Wahrscheinlichkeit besteht, daß der Antwortende kryptographische
Information hat. Dies einem Herausfordernden zu beweisen, ohne dem
Herausfordernden die kryptographische Information zu „enthüllen” oder zu „offenbaren”, bedeutet, daß es für den Herausfordernden
basierend auf der dem Herausfordernden offenbarten Information rechnerisch
undurchführbar
wäre, die
kryptographische Information zu bestimmen.
-
Solche
Beweise werden nachstehend als Direktbeweise bezeichnet. Der Ausdruck ”Direktbeweis” bezieht
sich auf Nullkenntnisbeweise, wobei diese Beweisarten auf dem Fachgebiet
allgemein bekannt sind. Insbesondere ist ein spezifisches Direktbeweis-Protokoll
wie hier verwendet Gegenstand der ebenfalls abhängigen Patentanmeldung mit
Anmeldenummer 10/306,336, die am 27.11.2002 mit der Bezeichnung „System
and Method for Establishing Trust Without Revealing Identity” eingereicht
und an den Inhaber der vorliegenden Anmeldung übertragen wurde. Ein Direktbeweis
definiert ein Protokoll, in dem ein Aussteller eine Familie vieler
Mitglieder definiert, die gemeinsame Eigenschaften teilen, die von dem
Aussteller definiert werden. Der Aussteller erzeugt ein Familienpaar
eines öffentlichen
und privaten Schlüssels
(Fpub und Fpri), das für
die gesamte Familie steht. Mit Hilfe des Fpri kann der Aussteller auch
einen einmaligen privaten Direktbeweis-Signierschlüssel (DPpri)
für jedes
einzelne Mitglied in der Familie erzeugen. Jede Nachricht, die von
einem einzelnen DPpri signiert wird, kann mit Hilfe des öffentlichen
Familienschlüssels
Fpub verifiziert werden. Jedoch identifiziert solch eine Verifikation
nur, daß der
Signierer ein Mitglied der Familie ist; es wird keine eindeutig
identifizierende Information über
das einzelne Mitglied dargelegt. In einer Ausführungsform kann der Aussteller
ein Vorrichtungshersteller oder Vertreter sein. Das heißt, der
Aussteller kann eine Entität
mit der Fähigkeit
zum Definieren von Vorrichtungsfamilien basierend auf den gemeinsamen Eigenschaften,
zum Erzeugen des öffentlichen/privaten
Familienschlüsselpaars
und zum Erzeugen und Einführen
privater DP-Schlüssel
in die Vorrichtungen sein. Der Aussteller kann auch Zertifikate
für den öffentlichen
Familienschlüssel
erzeugen, welche die Quelle des Schlüssels und die Eigenschaften
der Vorrichtungsfamilie identifizieren.
-
Mit
Bezug auf 1 ist eine Ausführungsform
eines Systems, das durch eine Plattform gekennzeichnet ist, die
mit einer vertrauenswürdigen Hardwarevorrichtung
(als „vertrauenswürdiges Plattformmodul” oder „TPM” bezeichnet)
ausgeführt
ist, die gemäß einer
Ausführungsform
der Erfindung arbeitet, dargestellt. Eine erste Plattform 102 (Herausfordernder)
sendet eine Aufforderung 106, daß eine zweite Plattform 104 (Antwortender)
Information über sich
selbst bereitstellt. In Antwort auf die Aufforderung 106 stellt
die zweite Plattform 104 die angeforderte Information 108 bereit.
-
Außerdem muß die erste
Plattform 102 für eine
erhöhte
Sicherheit möglicherweise
verifizieren, daß die
angeforderte Information 108 von einer Vorrichtung kommt,
die entweder von einem ausgewählten
Vorrichtungshersteller oder einer ausgewählten Gruppe von Vorrichtungsherstellern
(nachstehend als „Vorrichtungshersteller 110” bezeichnet)
kommt. Zum Beispiel fordert die erste Plattform 102 in
einer Ausführungsform
der Erfindung die zweite Plattform 104 heraus, zu zeigen,
daß sie
kryptographische Information (zum Beispiel eine Signatur) hat, die
von dem(den) Vorrichtungshersteller(n) 110 erzeugt ist. Die
Herausforderung kann entweder in einer Aufforderung 106 (wie
dargestellt) enthalten sein oder in eine getrennte Übertragung
sein. Die zweite Plattform 104 antwortet auf die Herausforderung
durch Bereitstellen von Information in Form einer Antwort, um die
erste Plattform 102 zu überzeugen,
daß die zweite
Plattform 104 kryptographische Information hat, die von
dem(den) Vorrichtungshersteller(n) 110 erzeugt ist, ohne
die kryptographische Information zu enthüllen. Die Antwort kann entweder
Teil der angeforderten Information 108 (wie dargestellt)
oder eine getrennte Übertragung
sein.
-
In
einer Ausführungsform
der Erfindung umfaßt
die zweite Plattform 104 ein vertrauenswürdiges Platform-Modul
(TPM) 115. Das TPM 115 ist eine kryptographische
Vorrichtung, die von dem(den) Vorrichtungshersteller(n) 110 hergestellt
wird. In einer Ausführungsform
der Erfindung umfaßt
das TPM 115 einen Prozessor mit einer kleinen Menge von
Speicher auf einem Chip, der innerhalb eines Gehäuses eingekapselt ist. Das
TPM 115 ist konfiguriert, um der ersten Plattform 102 Information
bereitzustellen, die sie dazu befähigen würde, zu bestimmen, daß eine Antwort
von einem gültigen
TPM gesendet wird. Die benutzte Information ist Inhalt, der es nicht
wahrscheinlich macht, daß die
Identität
des TPM oder der zweiten Plattform bestimmt werden kann.
-
2 stellt
eine erste Ausführungsform
der zweiten Plattform 104 mit dem TPM 115 dar.
Für diese
Ausführungsform
der Erfindung umfaßt
die zweite Plattform 104 einen Prozessor 202,
der mit dem TPM 115 verbunden ist. Im allgemeinen ist der
Prozessor 202 eine Vorrichtung, die Information verarbeitet. Zum
Beispiel kann der Prozessor 202 in einer Ausführungsform
der Erfindung als ein Mikroprozessor, digitaler Signalprozessor,
eine Mikrosteuerung oder sogar Zustandsmaschine ausgeführt sein.
Als Alternative kann der Prozessor 202 in einer anderen
Ausführungsform
der Erfindung als eine programmierbare oder hartcodierte Logik,
wie feldprogrammierbare Gate-Arrays (FPGAs); eine Transistor-Transistor-Logik
(TTL) oder sogar eine anwendungsspezifische integrierte Schaltung
(ASIC) ausgeführt
sein.
-
Hierin
umfaßt
die zweite Plattform 104 ferner eine Speichereinheit 206,
um die Speicherung kryptographischer Information wie eines oder
mehrere der Folgenden zu ermöglichen:
Schlüssel, Hash-Werte
(Streuwerte), Signaturen, Zertifikate usw. Ein Hash-Wert von „X” kann als „HASH(X)” dargestellt
werden. Es wird berücksichtigt,
daß solche Information
in dem internen Speicher 220 des TPMs 115 anstatt
der Speichereinheit 206 gespeichert werden kann, wie in 3 dargestellt.
Die kryptographische Information kann verschlüsselt werden, besonders wenn
sie außerhalb
des TPMs 115 gespeichert wird.
-
4 stellt
eine Ausführungsform
einer Plattform dar, die ein Computersystem 300 aufweist, das
mit dem TPM 115 aus 2 implementiert
ist. Das Computersystem 300 umfaßt einen Bus 302 und einen
Prozessor 310, der mit dem Bus 302 verbunden ist.
Das Computersystem 300 umfaßt ferner eine Hauptspeichereinheit 304 und
eine statische Speichereinheit 306.
-
Hierin
ist die Hauptspeichereinheit 304 ein flüchtiger Halbleiterspeicher
zum Speichern von Information und Befehlen, die von dem Prozessor 310 ausgeführt werden.
Der Hauptspeicher 304 kann auch zum Speichern temporärer Variablen
oder anderer Zwischeninformation während der Ausführung von
Befehlen durch den Prozessor 310 sein. Die statische Speichereinheit 306 ist
ein nichtflüchtiger Halbleiterspeicher
zum Speichern von Information und Befehlen von dauerhafterer Natur
für den
Prozessor 310. Beispiele eines statischen Speichers 306 schließen ein,
sind jedoch nicht beschränkt
oder eingeschränkt
auf Nurlesespeicher (ROM). Sowohl die Hauptspeichereinheit 304 als
auch die statische Speichereinheit 306 sind mit dem Bus 302 verbunden.
-
In
einer Ausführungsform
der Erfindung umfaßt
ein Computersystem 300 ferner eine Datenspeichervorrichtung 308,
wie eine Magnetplatte oder optische Platte, und ihr entsprechendes
Laufwerk kann auch mit dem Computersystem 300 zum Speichern von
Information und Befehlen verbunden sein.
-
Das
Computersystem 300 kann auch über den Bus 302 mit
der Grafiksteuervorrichtung 314 verbunden sein, die eine
Anzeige (nicht dargestellt) wie eine Kathodenstrahlröhre (CRT),
Flüssigkristallanzeige
(LCD) oder jeden beliebigen Flachbildschirm zum Anzeigen von Information
für einen
Endbenutzer steuert. In einer Ausführungsform kann gewünscht werden,
daß die
Grafiksteuerung oder eine andere periphere Vorrichtung eine authentisierte
verschlüsselte
Kommunikationssitzung mit einem Softwaremodul erstellt, das von
dem Prozessor ausgeführt
wird.
-
In
der Regel kann eine alphanumerische Eingabevorrichtung 316 (zum
Beispiel eine Tastatur, Kleintastatur usw.) mit dem Bus 302 verbunden
sein, um dem Prozessor 310 Information und/oder Befehlsauswahlen
mitzuteilen. Eine andere Art Benutzereingabevorrichtung ist die
Kursorsteuereinheit 318, wie z. B. eine Maus, eine Steuerkugel,
Berührungsfeld,
Eingabestift oder Kursorrichtungstasten, um dem Prozessor 310 Richtungsinformation
und Befehlsauswahlen mitzuteilen und die Kursorbewegung auf der
Anzeige 314 zu steuern.
-
Eine
Kommunikationsschnittstelleneinheit 320 ist auch mit dem
Bus 302 verbunden. Beispiele einer Schnittstelleneinheit 320 sind
ein Modem, eine Netzwerkschnittstellenkarte oder andere gut bekannte
Schnittstellen, die zum Verbinden mit einer Kommunikationsverbindung
benutzt werden, die Teil eines lokalen Netzes oder Fernnetzes sind.
Auf diese Weise kann das Computersystem 300 mit einer Anzahl
von Kunden und/oder Servern über
eine herkömmliche
Netzwerkinfrastruktur wie zum Beispiel das Intranet eines Unternehmens
und/oder das Internet verbunden werden.
-
Es
versteht sich, daß für bestimmte
Ausführungen
ein Computersystem wünschenswert
sein kann, das weniger oder mehr Ausstattung aufweist als das beschriebene.
Folglich variiert die Konfiguration des Computersystems 300 von
Ausführung
zu Ausführung
abhängig
von zahlreichen Faktoren, wie Preiseinschränkungen, Leistungsanforderungen, technologische
Verbesserungen und/oder anderen Umständen.
-
In
mindestens einer Ausführungsform
kann das Computersystem 300 die Verwendung speziell geschützter „vertrauenswürdiger” Softwaremodule (zum
Beispiel manipulationssichere Software oder Systeme mit der Fähigkeit
zum Ausführen
geschützter
Programme) unterstützen,
die in dem Hauptspeicher 304 und/oder Massenspeichervorrichtung 308 gespeichert
sind und von dem Prozessor 310 ausgeführt werden, um spezifische
Aktivitäten
sogar bei Vorhandensein einer anderen feindlichen Software in dem
System auszuführen.
Einige dieser vertrauenswürdigen
Softwaremodule erfordern einen gleichermaßen „vertrauenswürdigen” geschützten Zugang nicht
nur zu anderen Plattformen, sondern auch zu einer oder mehreren
Vorrichtungen innerhalb der gleichen Plattform, wie zum Beispiel
der Grafiksteuerung 314. Im allgemeinen erfordert solch
ein Zugang, daß das
vertrauenswürdige
Softwaremodul die Fähigkeiten
und/oder spezifische Identität
der Vorrichtung identifizieren und dann eine verschlüsselte Sitzung
mit der Vorrichtung einrichten kann, um den Austausch von Daten
zu ermöglichen,
die von einer anderen Software in dem System nicht ausspioniert oder
verfälscht
werden können.
-
Ein
Verfahren des Standes der Technik sowohl zum Identifizieren der
Vorrichtung als auch zum gleichzeitigen Erstellen der verschlüsselten
Sitzung ist die Benutzung eines einseitig authentisierten Diffie-Helman(DH)-Schlüsselaustauschprozesses.
In diesem Prozeß wird
der Vorrichtung ein einmaliges öffentliches/privates
RSA- oder ECC-Schlüsselpaar zugewiesen.
Die Vorrichtung enthält
den privaten Schlüssel
und schützt
ihn, während
der öffentliche Schlüssel zusammen
mit Authentifizierungszertifikaten an das Softwaremodul freigegeben
werden kann. Während
des DH-Schlüsselaustauschprozesses
signiert die Vorrichtung eine Nachricht mittels ihres privaten Schlüssels, den
das Softwaremodul mit Hilfe des entsprechenden öffentlichen Schlüssels verifizieren
kann. Dies ermöglicht,
daß das
Softwaremodul authentisieren kann, daß die Nachricht tatsächlich aus
der fraglichen Vorrichtung gekommen ist.
-
Da
dieser Authentifizierungsprozeß jedoch RSA-
oder ECC-Schlüssel
benutzt, hat die Vorrichtung eine einmalige und nachweisbare Identität. Jedes
beliebige Softwaremodul, das die Vorrichtung dazu bringen kann,
um eine Nachricht mit ihrem privaten Schlüssel zu signieren, kann beweisen,
daß diese
spezifische einmalige Vorrichtung in dem Computersystem vorhanden
ist. Da Vorrichtungen selten zwischen Verarbeitungssystemen wandern,
stellt dies auch eine beweisbare eindeutige Computersystemidentität dar. Darüber hinaus
repräsentiert
der öffentliche
Schlüssel
der Vorrichtung selbst einen konstanten eindeutigen Wert; quasi
einen permanenten „Cookie”. In manchen
Fällen
können
diese Eigenschaften als ein bedeutendes Datenschutzproblem verstanden
werden.
-
Ein
alternativer Ansatz ist in der ebenfalls abhängigen Patentanmeldung mit
Anmeldenummer 10/???,??? beschrieben, die am ?.?.2004 mit der Bezeichnung ”An Apparatus
and Method for Establishing an Authenticated Encrypted Session with
a Device Without Exposing Privacy-Sensitive Information” eingereicht
und auf den Inhaber der vorliegenden Anmeldung übertragen wurde. In diesem
Ansatz wird die Verwendung von RSA- oder ECC-Schlüsseln in dem
einseitig authentisierten Diffie-Helman-Prozeß durch Direktbeweis-Schlüssel ersetzt.
Eine Vorrichtung, welche diesen Ansatz anwendet, kann als zu einer
spezifischen Familie von Vorrichtungen zugehörig authentisiert werden, was
Zusicherungen über das
Verhalten oder die Vertrauenswürdigkeit
der Vorrichtung umfassen kann. Der Ansatz legt keinerlei eindeutig
identifizierende Information offen, die benutzt werden könnte, um
eine eindeutige Identität
zu erstellen, die das Verarbeitungssystem repräsentiert.
-
Obwohl
dieser Ansatz gut funktioniert, erfordert er zusätzlichen Speicher in der Vorrichtung,
um den privaten Direktbeweis-Schlüssel zu halten, der größer als
ein RSA- oder ECC-Schlüssel
sein kann. Um die Probleme dieses zusätzlichen Speichererfordernisses
abzuschwächen,
definieren Ausführungsformen
der vorliegenden Erfindung ein System und Verfahren zur Gewährleistung,
daß die
Vorrichtung den privaten Direktbeweis-Schlüssel aufweist, sie den Schlüssel benötigt, ohne
im wesentlichen zusätzlichen
Speicher in der Vorrichtung zu benötigen. In einer Ausführungsform
werden die DP-Schlüssel dem
Client-Computersystem in signierten Gruppen geliefert.
-
In
mindestens einer Ausführungsform
der vorliegenden Erfindung speichert ein Vorrichtungshersteller
nur eine pseudo-zufällige
128-Bit-Zahl in einer Vorrichtung, während die Vorrichtung auf dem Herstellungsband
hergestellt wird, während
ein viel größerer privater
Direktbeweis-Schlüssel
(DPpri) verschlüsselt
und mit Hilfe einer Verteilungs-CD bereitgestellt werden kann. Andere
Ausführungsformen können eine
Zahl in der Vorrichtung speichern, die länger oder kürzer als 128 Bit ist. Dieser
Prozeß gewährleistet,
daß nur
eine bestimmte Vorrichtung ihren zugewiesenen DPpri-Schlüssel entschlüsseln und
benutzen kann.
-
In
mindestens einer Ausführungsform
der vorliegenden Erfindung können
verschlüsselte DPpri-Datenstrukturen,
die „Schlüssel-Blobs” genannt
werden, in Gruppenverzeichnissen geliefert werden, die von einem
Vorrichtungshersteller signiert werden. Das gesamte Gruppenverzeichnis
muß zur Vorrichtung
geliefert werden, die nur ihren eigenen verschlüsselten Schlüssel-Blob
extrahiert. Ein Angreifer kann basierend auf der zeitlichen Abstimmung von
Angriffen nicht folgern, welcher Schlüssel-Blob ausgewählt wurde,
da die Vorrichtung das gesamte Verzeichnis syntaktisch analysieren
muß und
mit der Verarbeitung des extrahierten Schlüssel-Blobs nicht beginnen darf,
bis das gesamte Verzeichnis syntaktisch analysiert worden ist. Durch
Signieren des Verzeichnisses und Fordern, daß die Vorrichtung die Signatur
vor der Verarbeitung ihres Schlüssel-Blobs verifiziert,
kann gewährleistet
werden, daß ein
Angreifer zur Prüfung
der Antwort der Vorrichtung keine Mehrfachkopien eines einzigen
Schlüssel-Blobs
liefern kann. In einer Ausführungsform
kann ein Angreifer bestenfalls bestimmen, daß die Vorrichtung ein Mitglied
der Gruppe ist. In einer Ausführungsform speichert
die Vorrichtung einen pseudo-zufälligen Wert
einer vorbestimmten Größe (zum
Beispiel 128 Bit), einen Gruppenidentifikator (zum Beispiel 4 Byte) und
einen 20-Byte-Streuwert (Hash) des öffentlichen Gruppenschlüssels des
Vorrichtungsherstellers für eine
Gesamtanzahl von etwa 40 Datenbytes.
-
5 ist
ein Diagramm eines Systems zum Verteilen von Direktbeweis-Schlüsseln in
signierten Gruppen gemäß einer
Ausführungsform
der vorliegenden Erfindung. Es gibt drei Entitäten in diesem System, ein geschütztes Vorrichtungsherstellungssystem 502,
ein Vorrichtungsherstellungs-Produktionssystem 503 und
ein Client-Computersystem 504. Das geschützte Vorrichtungsherstellungssystem
umfaßt
ein Verarbeitungssystem, das in dem Aufbauprozeß vor der Herstellung einer
Vorrichtung 506 benutzt wird. Das geschützte System 502 kann
von einem Vorrichtungshersteller oder einer anderen Entität derart
betrieben werden, daß das
geschützte
System vor Angriffen von Hackern außerhalb des Vorrichtungsherstellungsortes
geschützt
wird (zum Beispiel ein geschlossenes System ist). Das Herstellungsproduktionssystem 503 kann
bei der Herstellung der Vorrichtungen benutzt werden. In einer Ausführungsform können das
geschützte
System und das Produktionssystem das gleiche System sein. Die Vorrichtung 506 umfaßt jede
beliebige Hardwarevorrichtung zur Einbeziehung in das Client-Computersystem (zum
Beispiel eine Speichersteuerung, eine periphere Vorrichtung wie
eine Grafiksteuerung, eine I/O-Vorrichtung, andere Vorrichtungen
usw.). In Ausführungsformen der
vorliegenden Erfindung umfaßt
die Vorrichtung einen pseudo-zufälligen
Wert RAND 508 und eine Gruppenzahl 509, die in
einem nichtflüchtigen
Speicher der Vorrichtung gespeichert ist.
-
Das
geschützte
Herstellungssystem weist eine geschützte Datenbank 510 und
eine Erzeugungsfunktion 512 auf. Die geschützte Datenbank umfaßt eine
Datenstruktur zum Speichern einer Vielzahl pseudo-zufälliger Werte
(mindestens einen pro herzustellender Vorrichtung), die durch die
Erzeugungsfunktion 512 in einer unten beschriebenen Weise
erzeugt werden. Die Erzeugungsfunktion umfaßt eine Logik (entweder in
Software oder Hardware umgesetzt), um eine Datenstruktur zu erzeugen,
die hierin als ein Schlüssel-Blob 514 bezeichnet
wird. Das Schlüssel-Blob 514 umfaßt mindestens
drei Datenelemente. Ein einmaliger privater Direktbeweis-Schlüssel (DPpri)
umfaßt
einen kryptographischen Schlüssel,
der von einer Vorrichtung zum Signieren benutzt werden kann. Die
private DP-Übersicht 516 (DPpri-Übersicht) umfaßt eine
Nachrichtenübersicht von DPpri gemäß jedem beliebigen gut bekannten
Verfahren zum Erzeugen einer sicheren Nachrichtenübersicht,
wie beispielsweise SHA-1. Einige Ausführungsformen können einen
pseudo-zufälligen
Initialisierungsvektor (IV) 518 aufweisen, der zu Kompatibilitätszwecken
einen Bitstrom als Teil des Schlüssel-Blobs
umfaßt.
Wenn eine Stromchiffrierung zur Verschlüsselung benutzt wird, dann
wird der IV in einem gut bekannten Verfahren zur Verwendung eines
IV in einem Stromchiffrierverfahren benutzt. Wenn eine Blockchiffrierung
zur Verschlüsselung
benutzt wird, dann wird der IV als Teil der zu verschlüsselnden
Nachricht benutzt, wodurch jedes Exemplar der Verschlüsselung
anders gemacht wird.
-
In
Ausführungsformen
der vorliegenden Erfindung erzeugt das geschützte Herstellungssystem einen
oder mehrere Schlüssel-Blobs
(wie nachstehend ausführlich
beschrieben) und speichert die Schlüssel-Blobs in den Gruppenverzeichnissen 515 in
einer Schlüssel-Blob-Datenbank 520 auf
einer CD 522. In einer Ausführungsform kann es in jedem Gruppenverzeichnis
viele Schlüssel-Blobs und viele Gruppenverzeichnisse
auf einer einzigen CD in jeder beliebigen Kombination geben, wobei
die einzige Einschränkung
die physikalische Speichergrenze der CD ist. Folglich umfaßt jedes
Gruppenverzeichnis mehrere Schlüssel-Blobs.
Die CD wird dann durch typische physikalische Kanäle an Computersystemhersteller,
Computervertreiber, Client-Computersystem-Verbraucher
und andere verteilt. Wenngleich eine CD hierin als Speicherme dium
beschrieben wird, kann jedes beliebige geeignete entfernbare Speichermedium
(zum Beispiel eine digitale vielseitige Platte (DVD) oder anderes
Medium) benutzt werden.
-
Ein
Client-Computersystem 504, das die Verwendung eines Direktbeweis-Protokolls
zur Authentifizierung und zum Schlüsselaustausch einer Kommunikationssitzung
mit der Vorrichtung 506 wünscht, die innerhalb des Systems 504 enthalten ist,
kann ein ausgewähltes
Gruppenverzeichnis 515 aus der Schlüssel-Blob-Datenbank 520 auf
der CD lesen, sobald die CD in ein CDROM-Laufwerk (nicht dargestellt)
des Client-Computersystems eingelegt ist. Die Schlüssel-Blob-Daten
können
von dem Gruppenverzeichnis erhalten und von der Vorrichtung benutzt
werden, um einen lokalisierten Schlüssel-Blob 524 (wie
unten beschrieben) zum Gebrauch bei der Implementierung des Direktbeweis-Protokolls
zu erzeugen. In Ausführungsformen
der vorliegenden Erfindung wird ein gesamtes Gruppenverzeichnis,
das mehrere Schlüssel-Blobs
umfaßt,
von der Vorrichtung auf einmal verarbeitet, wobei ein Angreifer
nicht bestimmen kann, welches spezifische Schlüssel-Blob derzeit benutzt wird,
um den verschlüsselten lokalisierten
Schlüssel-Blob
zu erzeugen. Die Vorrichtungstreibersoftware 526 wird von
dem Client-Computersystem ausgeführt,
um die Vorrichtung 506 zu starten und zu steuern.
-
In
Ausführungsformen
der vorliegenden Erfindung kann es vier unterschiedliche Betriebsstufen geben. 6 ist
ein Flußdiagramm,
das die Schritte eines Verfahrens zum Verteilen von Direktbeweis-Schlüsseln gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt. Gemäß Ausführungsformen der vorliegenden
Erfindung können
bei jedem Schritt bestimmte Funktionen ausgeführt werden. An einem Vorrichtungsherstellungsort
gibt es mindestens zwei Stufen: die Aufbaustufe 602 und
die Herstellungsproduktionsstufe 604. Die Aufbaustufe wird
hierin mit Bezug auf 7 beschrieben. Die Herstellungsproduktionsstufe
wird hierin mit Bezug auf 8 beschrieben.
An einem Verbraucherort, an dem sich das Client-Computersystem befindet, gibt es mindestens
zwei Stufen: die Aufbaustufe 606 und die Benutzungsstufe 608.
Die Aufbaustufe des Client-Computersystems wird hierin mit Bezug
auf 9 beschrieben. Die Benutzungsstufe des Client-Computersystems
wird hierin mit Bezug auf 10 beschrieben.
-
7 und 8 sind
Flußdiagramme 700 und 800,
die eine Herstellungsaufbauverarbeitung der Vorrichtung gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellen. In einer Ausführungsform
kann ein Vorrichtungshersteller diese Handlungen mit Hilfe eines
geschützten Herstellungssystems 502 ausführen. Bei
Block 701 erzeugt der Vorrichtungshersteller ein Direktbeweis-Familienschlüsselpaar
(Fpub und Fpri) für
jede Klasse von herzustellenden Vorrichtungen. Jede einmalige Vorrichtung
weist einen entsprechenden DPpri-Schlüssel auf, so daß eine Signatur,
die mit Hilfe des DPpri erzeugt wird, von dem Fpub verifiziert werden
kann. Eine Vorrichtungsklasse kann basierend auf der Versionsnummer
oder anderen Eigenschaften der Vorrichtungen jeden beliebigen Satz
oder untergeordneten Satz von Vorrichtungen wie eine ausgewählte Produktlinie
(das heißt,
Vorrichtungsart) oder untergeordnete Sätze einer Produktlinie umfassen.
Das Familienschlüsselpaar
dient dem Gebrauch der Vorrichtungsklasse, für welche es erzeugt wurde.
-
Bei
Block 702 erzeugt der Vorrichtungshersteller ein RSA-Schlüsselpaar
(Gpri, Gpub), das zum Signieren und Verifizieren des Gruppenverzeichnisses
benutzt wird. In anderen Ausführungsformen kann
statt RSA jedes beliebige digitale Signatursystem benutzt werden.
Dieses Schlüsselpaar
ist unabhängig
von dem Familienschlüsselpaar,
das in Block 701 erzeugt wird, und kann für alle Vorrichtungsgruppierungen
benutzt werden, die von dem Vorrichtungshersteller erzeugt werden.
Bei Block 703 wählt der
Vorrichtungshersteller eine gewünschte
Gruppengröße aus.
Die Gruppengröße kann
die Anzahl von Vorrichtungen in der Familie sein, die gruppiert wird.
Die Gruppengröße wird
groß genug
ausgewählt,
so daß sich
eine einzelne Vorrichtung innerhalb der Gruppe „verstecken” kann,
jedoch nicht so groß,
daß während der
Schlüssel-Blob-Extraktionsverarbeitung
von der Vorrichtung unangemessen viel Zeit verbraucht wird. In einer
Ausführungsform
kann die Gruppengröße mit 5.000
Vorrichtungen ausgewählt
werden. In anderen Ausführungsformen
können
andere Größen benutzt
werden.
-
Der
Vorrichtungshersteller kann dann die Anzahl von Vorrichtungsschlüsseln erzeugen,
die von der Gruppengröße spezifiziert
wird. Jeder Gruppe mit einer Anzahl von Vorrichtungen, die von der
Gruppengröße spezifiziert
wird, kann mit einer Gruppenzahl bezeichnet werden. Für jede Vorrichtung,
die für eine
gegebene Gruppe herzustellen ist, können die Erzeugungsfunktion 512 oder
anderen Module des geschützten
Herstellungssystems 502 die Blöcke 704 aus 7 bis 802 aus 8 ausführen. Zuerst erzeugt
die Erzeugungsfunktion bei Block 704 einen einmaligen pseudo-zufälligen Wert
(RAND) 508. In einer Ausführungsform beträgt die Länge des
RAND 128 Bit. In anderen Ausführungsformen
können
andere Werte benutzt werden. In einer Ausführungsform können die
pseudo-zufälligen
Werte für
eine Anzahl von Vorrichtungen im Vorfeld erzeugt werden. Bei Block 706 erzeugt
die Erzeugungsfunktion mit Hilfe einer Einwegfunktion f, die von
der Vorrichtung unterstützt
wird, einen symmetrischen Verschlüsse lungsschlüssel SKEY
aus dem eindeutigen RAND-Wert (SKEY = f(RAND). Die Einwegfunktion kann
ein beliebiger bekannter Algorithmus sein, der zu diesem Zweck geeignet
ist (zum Beispiel SHA-1, MGF1, Datenverschlüsselungsstandard (DES), Dreifach-DES
usw.). Bei Block 708 erzeugt die Erzeugungsfunktion ein
Identifikator(ID)-Etikett, das benutzt wird, um das Schlüssel-Blob 515 dieser
Vorrichtung auf der Verteilungs-CD zu referenzieren, indem der SKEY
benutzt wird, um einen „Nulleintrag” (zum Beispiel
eine kleine Anzahl von Nullbytes) (Vorrichtungs-ID = Verschlüsseln von
(0..0) mit Hilfe von SKEY zu verschlüsseln. In anderen Ausführungsformen
können
andere Art und Weisen zum Erzeugen der Vorrichtungs-ID benutzt werden
oder andere Werte können
von dem SKEY verschlüsselt
werden.
-
Danach
erzeugt die Erzeugungsfunktion in Block 710 den privaten
DP-Signierschlüssel,
der mit dem öffentlichen
Familienschlüssel
(Fpub) der Vorrichtung in Beziehung steht. Bei Block 712 hashed die
Erzeugungsfunktion DPpri, um ein DPpri-Digest mittels bekannter
Verfahren (zum Beispiel mittels SHA-1 oder einem anderen Hash-Algorithmus)
zu erzeugen. Bei Block 714 bildet die Erzeugungsfunktion eine
Schlüssel-Blob-Datenstruktur
für die
Vorrichtung. Das Schlüssel-Blob
weist mindestens DPpri und den DPpri-Digest auf. In einer Ausführungsform weist
das Schlüssel-Blob
auch einen zufälligen
Initialisierungsvektor (IV) auf, der mehrere pseudo-zufällig erzeugte
Bits aufweist. Diese Werte können
unter Verwendung von SKEY verschlüsselt werden, um ein verschlüsseltes
Schlüssel-Blob 514 zu
erzeugen. Bei Block 716 können die in Block 708 erzeugte
Vorrichtungs-ID und das in Block 714 erzeugte verschlüsselte Schlüssel-Blob 514 in
einem Verzeichnis in der Schlüssel-Blob-Datenbank 520 gespeichert
und auf der Verteilungs-CD 522 freigegeben werden. In einer Ausführungsform
kann das Verzeichnis in der Schlüssel-Blob-Datenbank
mit der Vorrichtungs-ID gekennzeichnet werden.
-
Die
Verarbeitung geht bei Block 801 in 8 weiter.
In Block 801 können
der derzeitige RAND-Wert und die derzeitige Gruppenzahl für die Gruppe,
zu der die Vorrichtung gehört,
in der geschützten
Datenbank 510 gespeichert werden. In Block 802 können der
SKEY und DPpri gelöscht
werden, da sie von der Vorrichtung in dem Feld erneut erzeugt werden.
Die Gruppenzahl kann für
jede nachfolgende Gruppe von hergestellten Vorrichtungen erhöht werden.
Die Erschaffung des DPpri-Digest und die nachfolgende Verschlüsselung
durch den SKEY sind derart gestaltet, daß die Inhalte des DPpri von
keiner Entität
bestimmt werden können, die
nicht im Besitz des SKEY ist, und derart, daß die Inhalte des Schlüssel-Blobs
von keiner Entität
modifiziert werden können,
die nicht im Besitz des SKEY ist, ohne danach von einer Entität erfasst
zu werden, die in Besitz des SKEY ist. In anderen Ausführungsformen können andere
Verfahren zum Bereitstellen dieses Datenschutzes und Integritätsschutzes
angewendet werden. In einigen Ausführungsformen kann der Integritätsschutz
nicht erforderlich sein und es könnte
ein Verfahren, das nur den Datenschutz bereitstellt, angewendet
werden. In diesem Fall wäre der
Wert des DPpri-Digest nicht notwendig.
-
Wenn
der gesamte Datensatz von Schlüssel-Blobs
für eine
Gruppe von Vorrichtungen erzeugt worden ist, kann zumindest die
Schlüssel-Blob-Datenbank 520 dieser
Gruppe signiert und auf eine gewöhnliche
Verteilungs-CD gebrannt werden, die mit der jeweiligen Vorrichtung
vertrieben wird (in einer Ausführungsform
kann ein Eintrag der Schlüssel-Blob-Datenbank
für jede
Vorrichtung benutzt werden, die von dem Vorrichtungs-ID-Feld indexiert wird).
Folglich erzeugt der Vorrichtungshersteller bei Block 804 ein
Gruppenverzeichnis 515. Das Gruppenverzeichnis umfaßt die Gruppenzahl,
den öffentlichen
Gruppenschlüssel
Gpub, die Gruppengröße und die
Schlüssel-Blob-Verzeichnisse
der gesamten Gruppe (<Group
Number, Gpub, Group Size, <Device
ID1, Encrypted Keyblob1>, <Device ID2, Encrypted
Keyblob2>, ...>). Bei Block 806 signiert
der Vorrichtungshersteller das Gruppenverzeichnis mit Hilfe des
privaten Gruppenschlüssels
Gpri und hängt die
digitale Signatur an das Gruppenverzeichnis an. In Block 808 kann
das signierte Gruppenverzeichnis zu der Schlüssel-Blob-Datenbank auf der
Verteilungs-CD hinzugefügt
werden. In einer Ausführungsform
umfaßt
die Verteilungs-CD auch ein Schlüsselabruf-Utility-Softwaremodul
zur zukünftigen
Verarbeitung auf dem Client-Computersystem,
dessen Benutzung nachstehend ausführlicher beschrieben wird.
-
Zu
jedem beliebigen Zeitpunkt nach Block 802 kann die geschützte Datenbank
von RAND- und Gruppenzahl-Wertpaaren sicher auf das Herstellungsproduktionssystem 503 hochgeladen
werden, das die RAND- und Gruppenzahl-Werte während des Herstellungsprozesses
in den Vorrichtungen speichert. Sobald dieser Upload verifiziert
worden ist, können
die RAND-Werte aus dem geschützten
Herstellungssystem 502 sicher gelöscht werden.
-
9 ist
ein Flußdiagramm 900,
das eine Herstellungsproduktionsverarbeitung der Vorrichtung gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt. Während die Vorrichtungen in
einer Produktionslinie hergestellt werden, wählt das Herstellungsproduktionssystem
bei Block 902 ein unbenutztes RAND- und Gruppenzahl-Wertepaar
aus der geschützten
Datenbank aus. Der ausgewählte RAND-
und Gruppenzahl-Wert kann dann in dem nichtflüchtigen Speicher in einer Vorrichtung
gespeichert werden. In einer Ausführungsform umfaßt der nichtflüchtige Speicher
ein TPM. In Block 904 kann ein Streuwert des öffentlichen
Gruppenschlüssels Gpub
auch in dem nichtflüchtigen
Speicher der Vorrichtung gespeichert werden. In Block 906 zerstört das Herstellungsproduktionssystem
sämtliche
Aufzeichnungen des RAND-Wertes dieser Vorrichtung in der geschützten Datenbank,
sobald die Speicherung des RAND-Wertes in der Vorrichtung erfolgreich
ist. An diesem Punkt wird die einzige Kopie des RAND-Wertes in der
Vorrichtung gespeichert.
-
In
einer alternativen Ausführungsform
kann der RAND-Wert während
der Herstellung einer Vorrichtung erzeugt und danach an das geschützte Herstellungssystem
für die
Berechnung eines Schlüssel-Blobs
gesendet werden.
-
In
einer anderen Vorrichtung kann der RAND-Wert auf der Vorrichtung
erzeugt werden und die Vorrichtung und das geschützte Herstellungssystem können in
ein Protokoll verknüpft
sein, um den DPpri-Schlüssel
mit Hilfe eines Verfahrens zu erzeugen, das den DPpri-Schlüssel außerhalb
der Vorrichtung nicht enthüllt.
Dann kann die Vorrichtung die Vorrichtungs-ID, den SKEY und den
Schlüssel-Blob erzeugen.
Die Vorrichtung leitet die Vorrichtungs-ID und den Schlüssel-Blob an das Herstellungssystem zur
Speicherung in der geschützten
Datenbank 510 weiter. In diesem Verfahren weist das Herstellungssystem
am Ende die gleiche Information (Vorrichtungs-ID, Schlüssel-Blob) in der geschützten Datenbank
auf, kennt jedoch nicht die Werte von RAND oder von DPpri.
-
10 und 11 sind
Flußdiagramme 1000 und 1100 einer
Aufbauverarbeitung eines Client-Computersystems
gemäß einer
Ausführungsform
der vorliegenden Erfindung. Ein Client-Computersystem kann diese Handlungen
als Teil des Hochfahrens des Systems ausführen. Bei Block 1002 kann das
Client-Computersystem auf normale Weise hochgefahren werden und
ein Vorrichtungstreiber 526 für die Vorrichtung kann in den
Hauptspeicher geladen werden. Wenn der Vorrichtungstreiber initialisiert
wird und mit der Ausführung
beginnt, bestimmt der Vorrichtungstreiber bei Block 1004,
ob in der Massenspeichervorrichtung 308 für die Vorrichtung 506 bereits
ein verschlüsseltes
lokalisiertes Schlüssel-Blob 524 gespeichert
ist. Falls ja, muß keine
weitere Aufbauverarbeitung ausgeführt werden und die Aufbauverarbeitung
endet bei Block 1006. Falls nicht, geht die Verarbeitung
in Block 1008 weiter. In Block 1008 veranlasst
der Vorrichtungstreiber die Anzeige einer Nachricht für den Benutzer
des Client-Computersystems,
in der dieser zum Einlegen der Verteilungs-CD 522 aufgefordert
wird. Sobald die CD von dem Computersystem gelesen wird, startet der
Vorrichtungstreiber das Schlüsselabruf-Utility-Softwaremodul
(in 5 nicht dargestellt), das auf der CD gespeichert ist.
Die Schlüsselabruf-Utility fragt
die Vorrichtung nach ihrer Gruppen-ID, die der Streuwert des öffentlichen
Gruppenschlüssels
Gpub sein kann, und nach der Gruppenzahl 509. Die Vorrichtung
sendet diese Werte zurück,
welche die Utility benutzt, um das richtig signierte Gruppenverzeichnis aus
der Schlüssel-Blob-Datenbank
auf der CD zu finden. Diese Utility erteilt der Vorrichtung 506 auch
einen Schlüsselerfassungsbefehl,
um den Prozeß zur Erfassung
eines privaten DP-Schlüssels
der Vorrichtung zu initiieren.
-
Daraufhin
benutzt die Vorrichtung in Block 1010 ihre Einwegfunktion
f, um den symmetrischen Schlüssel
SKEY (nun zur Verwendung bei der Entschlüsselung) aus dem eingebetteten
RAND-Wert 508 (SKEY
= f(RAND)) erneut zu erzeugen. Bei Block 1012 erzeugt die
Vorrichtung dann ihr eindeutiges Vorrichtungs-ID-Etikett, indem
sie den SKEY zum Verschlüsseln
eines „Nulleintrags” (zum Beispiel einer
kleinen Anzahl von Nullbytes) (Vorrichtung-ID = Verschlüsseln (0..0)
mit Hilfe des SKEY) benutzt. In einer Ausführungsform der vorliegenden
Erfindung kann keiner dieser Werte außerhalb der Vorrichtung enthüllt werden.
Die Vorrichtung signalisiert dann ihre Bereitschaft zum Fortschreiten.
-
Bei
Block 1014 durchsucht die Schlüsselabruf-Utility die Schlüssel-Blob-Datenbank 520 auf
der CD nach dem Gruppenverzeichnis, das die passende Gruppenzahl
enthält,
extrahiert das Gruppenverzeichnis und transferiert das gesamte Gruppenverzeichnis
an die Vorrichtung.
-
Bei
Block 1016 analysiert die Vorrichtung das gesamte gelieferte
Gruppenverzeichnis syntaktisch, bewahrt jedoch nur die Gruppenzahl,
den Streuwert des Gruppenverzeichnisses, den öffentlichen Gruppenschlüssel Gpub
und das erste Feld <Device
ID, Encrypted Keyblob>,
das mit der eigenen Vorrichtungs-ID der Vorrichtung (die in Block 1012 erzeugt wird) übereinstimmt.
Bei Block 1018 verifiziert die Vorrichtung nun das Gruppenverzeichnis.
In einer Ausführungsform
vergleicht die Vorrichtung das extrahierte Gruppennummernfeld mit
der Gruppenzahl, die in der Vorrichtung eingebettet ist. Wenn sie
nicht übereinstimmen,
kann der Schlüsselerfassungsprozeß beendet
werden. Falls nicht, hashed die Vorrichtung das extrahierte Gpub-Feld
und vergleicht es mit dem Gpub-Hash in der Vorrichtung. Wenn die
Hashes nicht übereinstimmen,
kann der Schlüsselerfassungsprozeß beendet
werden. Falls nicht, benutzt die Vorrichtung den validierten Gpub-Schlüssel, um die
bereitgestellte Signatur auf dem Streuwert des Gruppenverzeichnisses
zu verifizieren. Wenn die Signatur verifiziert ist, ist das Gruppenverzeichnis
verifiziert und der Prozeß geht
in Block 1120 von 11 weiter.
-
Wenn
in einer Ausführungsform
eine Rogue-Software versucht, einen Schlüsselerfassungsbefehl an die
Vorrichtung zu senden, nachdem die Vorrichtung das Schlüssel-Blob
hat, antwortet die Vorrichtung nicht auf die Rogue-Software mit
der Gruppenzahl. Statt dessen antwortet die Vorrichtung mit einer
Fehleranzeige. Wenn die Vorrichtung Zugang zu einem lokalisierten
Schlüssel-Blob
hat, dann wird die Funktionalität
des Schlüsselerfassungsbefehls
in der Tat deaktiviert. Folglich enthüllt die Vorrichtung die Gruppenzahl
nicht, außer
wenn sie das Schlüssel-Blob
nicht aufweist.
-
Bei
Block 1120 entschlüsselt
die Vorrichtung das verschlüsselte
Schlüssel-Blob
mit Hilfe des symmetrischen Schlüssels
SKEY, um DPpri und den DPpri-Digest zu liefern, und speichert diese
Werte in ihrem nichtflüchtigen
Speicher (Entschlüsseltes Schlüssel-Blob
= Entschlüsseln
(IV, DPpri, DPpri-Digest mittels SKEY). Der Initialisierungsvektor
(IV) kann verworfen werden. Bei Block 1122 überprüft die Vorrichtung
dann die Integrität
des DPpri durch Hashen des DPpri und Vergleichen des Ergebnisses
mit dem DPpri-Digest. Wenn der Vergleich positiv ist, akzeptiert
die Vorrichtung DPpri als ihren gültigen Schlüssel. Die Vorrichtung kann
auch ein Schlüssel-Erfaßt-Flag
als wahr setzen, um anzuzeigen, daß der private DP-Schlüssel erfolgreich
erfaßt
worden ist. Bei Block 1124 wählt die Vorrichtung einen neuen IV
und erzeugt ein neues verschlüsseltes
lokalisiertes Schlüssel-Blob
mit Hilfe des neuen IV (Lokalisiertes Schlüssel-Blob = Verschlüsseln (IV2,
DPpri, DPpri-Digest) mittels SKEY). Das neue verschlüsselte lokalisierte
Schlüssel-Blob
kann zur Schlüsselabruf-Utility
zurückgesendet
werden. Bei Block 1126 speichert die Schlüsselabruf-Utility
das verschlüsselte,
lokalisierte Schlüssel-Blob
in dem Speicher innerhalb des Client-Computersystems (wie zum Beispiel einer
Massenspeichervorrichtung 308). Der DPpri der Vorrichtung
wird nun in dem Client-Computersystem
sicher gespeichert.
-
Sobald
die Vorrichtung den DPpri während der
Aufbauverarbeitung erfaßt
hat, kann die Vorrichtung den DPpri benutzen. 12 ist
ein Flußdiagramm,
das die Verarbeitung eines Client-Computersystems gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt. Das Client-Computersystem
kann diese Handlungen zu jeder Zeit nach Abschluß des Setups ausführen. Bei
Block 1202 kann das Client-Computersystem normal hochgefahren werden
und ein Vorrichtungstreiber 526 für die Vorrichtung kann in den
Hauptspeicher geladen werden. Wenn der Vorrichtungstreiber gestartet
wird und mit der Ausführung
beginnt, bestimmt der Vorrichtungstreiber, ob in der Massenspeichervorrichtung 308 für die Vorrichtung 506 bereits
ein verschlüsseltes
lokalisiertes Schlüssel-Blob 524 gespeichert
ist. Falls nicht, wird die Setup- Verarbeitung
aus 10 und 11 ausgeführt. Wenn
ein verschlüsseltes
lokalisiertes Schlüssel-Blob für diese
Vorrichtung verfügbar
ist, geht die Verarbeitung in Block 1206 weiter. Bei Block 1206 ruft
der Vorrichtungstreiber das verschlüsselte lokalisierte Schlüssel-Blob
ab und transferiert das Schlüssel-Blob
an die Vorrichtung. In einer Ausführungsform kann der Transfer
des Schlüssel-Blobs
durch Ausführen
eines Schlüssel-Blob-Ladebefehls
erreicht werden.
-
Die
Vorrichtung benutzt in Block 1208 ihre Einwegfunktion f,
um den symmetrischen Schlüssel SKEY
(nun zur Verwendung bei der Entschlüsselung) aus dem eingebetteten
RAND-Wert 508 (SKEY = f(RAND)) erneut zu erzeugen. Bei
Block 1210 entschlüsselt
die Vorrichtung das verschlüsselte
Schlüssel-Blob
mit Hilfe des symmetrischen Schlüssels SKEY,
um DPpri und den DPpri-Digest zu liefern, und speichert diese Werte
in ihrem nichtflüchtigen
Speicher (Entschlüsseltes
Schlüssel-Blob
= Entschlüsseln
(IV, DPpri, DPpri-Digest mittels SKEY). Der zweite Initialisierungsvektor
(IV2) kann verworfen werden. Bei Block 1212 überprüft die Vorrichtung dann
die Integrität
von DPpri durch Hashen von DPpri und Vergleichen des Ergebnisses
mit dem DPpri-Digest. Wenn der Vergleich positiv ist (zum Beispiel
die Digests übereinstimmen),
akzeptiert die Vorrichtung den DPpri als den vorher erfaßten gültigen Schlüssel und
aktiviert ihn zur Benutzung. Die Vorrichtung kann auch ein Schlüssel-Erfaßt-Flag
als wahr setzen, um anzuzeigen, daß der private DP-Schlüssel erfolgreich
erfaßt
worden ist. Bei Block 1214 wählt die Vorrichtung wieder
einen anderen IV und erzeugt ein neues verschlüsseltes lokalisiertes Schlüssel-Blob
mit Hilfe des neuen IV (Lokalisiertes Schlüssel-Blob = Verschlüsseln (IV3,
DPpri, DPpri-Digest) mittels SKEY). Das neue verschlüsselte lokalisierte
Schlüssel-Blob
kann zur Schlüsselabruf-Utility
zurückgesendet
werden. Bei Block 1216 speichert die Schlüsselabruf-Utility
das verschlüsselte,
lokalisierte Schlüssel-Blob
in dem Speicher innerhalb des Client-Computersystems (wie zum Beispiel einer
Massenspeichervorrichtung 308). Der DPpri der Vorrichtung
wird nun erneut in dem Client-Computersystem sicher gespeichert.
-
In
einer Ausführungsform
der vorliegenden Erfindung ist es nicht notwenig, alle privaten DP-Schlüssel der
Vorrichtung für
die signierten Gruppen auf einmal zu erzeugen. Unter der Annahme, daß die Verteilungs-CD
regelmäßig aktualisiert
wird, könnten
die privaten DP-Schlüssel der
Vorrichtung je nach Bedarf in Bündeln
erzeugt werden. Immer wenn die Verteilungs-CD „gebrannt” wird, enthält sie die
signierten Gruppen für
die Schlüssel-Blob-Datenbank, die bisher
erzeugt worden ist, einschließlich
derjenigen Vorrichtungsschlüssel,
die erzeugt, jedoch den Vorrichtungen noch nicht zugewiesen worden
sind.
-
Wenn
das gesamte Gruppenverzeichnis in einer Ausführungsform in Block 1018 aus 10 verarbeitet
wird, kann die Vorrichtung im Falle einer Fehlererkennung ein Flag
setzen, das anzeigt, daß der Fehler
aufgetreten ist, sollte jedoch mit der Verarbeitung fortfahren.
Wenn alle Schritte für
den System-Setup vollendet worden sind, kann die Vorrichtung dem
Vorrichtungstreiber den Fehler signalisieren. Dies kann einen Angreifer
daran hindern, Information aus der Art und dem Ort des Fehlers zu
erhalten.
-
In
einer Ausführungsform
können
die hierin beschriebenen Verfahren etwa 40 Byte an nichtflüchtigem
Speicher in der Vorrichtung benutzen. In einer anderen Ausführungsform
kann dieser auf etwa 20 Byte reduziert werden, wenn der Gpub-Schlüssel-Hash
in dem verschlüsselten
Schlüssel-Blob
der Vorrichtung enthalten und nicht in dem nichtflüchtigen
Speicher auf der Vorrichtung gespeichert ist. Wenn die Vorrichtung
das verschlüsselte
Schlüssel-Blob
entschlüsselt,
kann die Vorrichtung in diesem Fall den Gpub-Hash abrufen, den Hash
zum Überprüfen des
Gpub-Schlüssels
benutzen und den Gpub-Schlüssel
zum Überprüfen der
Signatur auf dem gesamten Gruppenverzeichnis benutzen.
-
Obwohl
die hierin erläuterten
Vorgänge
als ein sequentieller Prozeß beschrieben
werden können,
können
einige der Vorgänge
in der Tat parallel oder gleichzeitig ausgeführt werden. Außerdem kann die
Reihenfolge der Vorgänge
in einigen Ausführungsformen
neu angeordnet werden, ohne von dem Geist der Erfindung abzuweichen.
-
Die
hierin beschriebenen Techniken sind nicht auf eine bestimmte Hardware-
oder Softwarekonfiguration eingeschränkt; sie können in jeder beliebigen Rechen-
oder Verarbeitungsumgebung Anwendung finden. Die Techniken können in
Hardware, Software oder einer Kombination der beiden umgesetzt werden.
Die Techniken können
in Programmen, die auf programmierbaren Maschinen wie mobilen oder
stationären
Computer, persönlichen
digitalen Assistenten, Set-Top-Boxes, Mobiltelefonen und Funkrufempfängern und
anderen elektronischen Vorrichtungen ausgeführt werden, die jeweils einen
Prozessor, ein Speichermedium, das von dem Prozessor gelesen werden
kann (einschließlich
eines flüchtigen und
nichtflüchtigen
Speichers und/oder Speicherelementen), mindestens eine Eingabevorrichtung
und eine oder mehrere Ausgabevorrichtungen aufweisen. Ein Programmcode
wird auf die Daten angewendet, die mit Hilfe der Eingabevorrichtung
eingegeben werden, um die beschriebenen Funktionen auszuführen und
Ausgabeinformation zu erzeugen. Die Ausgabeinformation kann auf
eine oder mehrere Ausgabevorrichtungen angewendet werden. Der Durchschnittsfachmann
versteht, daß die
Erfindung mit verschiedenen Computersystemkonfigurationen umgesetzt werden
kann, einschließlich
Mehrprozessorsystemen, Minicomputern, Großrechnern und dergleichen. Die
Erfindung kann auch in verteilten Rechenumgebungen umgesetzt werden,
in denen Befehle von entfernten Verarbeitungsvorrichtungen ausgeführt werden,
die durch ein Kommunikationsnetzwerk verbunden sind.
-
Jedes
Programm kann in einer verfahrensorientierten oder Objekt-orientierten
Programmiersprache auf hoher Ebene ausgeführt werden, um mit einem Verarbeitungssystem
zu kommunizieren. Die Programme können jedoch je nach Wunsch
in Assemblersprache oder Maschinensprache ausgeführt werden. In jedem Fall kann
die Sprache kompiliert oder interpretiert werden.
-
Programmbefehle
können
benutzt werden, um zu bewirken, daß ein Universal- oder Spezialverarbeitungssystem,
das mit den Befehlen programmiert ist, die hierin beschriebenen
Vorgänge
ausführt.
Als Alternative können
die Vorgänge
durch spezifische Hardwarekomponenten ausgeführt werden, die eine festverdrahtete
Logik zum Ausführen
von Vorgängen
enthalten, oder durch jede beliebige Kombination von programmierten
Computerkomponenten und kundenspezifischen Hardwarekomponenten.
Die hierin beschriebenen Verfahren können als ein Computerprogrammprodukt
bereitgestellt werden, das ein maschinenlesbares Medium aufweisen
kann, auf dem Befehle gespeichert sind, die zum Programmieren eines
Verarbeitungssystems oder einer anderen elektronischen Vorrichtung
zur Ausführung
der Verfahren benutzt werden können.
Der hierin verwendete Ausdruck ”maschinenlesbares
Medium” soll
jedes Medium einschließen,
das eine Sequenz von Befehlen zur Ausführung durch die Maschine speichern
oder verschlüsseln
und bewirken kann, daß die
Maschine jedes der hierin beschriebenen Verfahren ausführt. Der
Ausdruck ”maschinenlesbares
Medium” soll
dementsprechend einschließen,
jedoch nicht beschränkt
sein auf Festspeicher, optische und magnetische Platten und eine
Trägerwelle,
die ein Datensignal verschlüsselt.
Darüber
hinaus wird im Stand der Technik im allgemeinen von einer Software
in der einen oder anderen Form (zum Beispiel Programm, Prozedur,
Prozeß,
Anwendung, Modul, Logik und so weiter) gesprochen, wenn diese eine
Handlung ausführt
oder ein Ergebnis bewirkt. Solche Ausdrücke sind lediglich eine Kurzform
zur Bezeichnung dessen, daß die
Ausführung
der Software von einem Verarbeitungssystem bewirkt, daß der Prozessor
eine Handlung ausführt
oder ein Ergebnis hervorbringt.
-
Wenngleich
diese Erfindung mit Bezug auf die beispielhaften Ausführungsformen
beschrieben worden ist, soll diese Beschreibung nicht in einschränkendem
Sinne verstanden werden. Verschiedene Modifikationen der beispielhaften
Ausführungsformen
sowie andere Ausführungsformen
der Erfindung, die für
den Fachmann des Gebiets, zu dem die Erfindung gehört, offensichtlich
sind, gelten als innerhalb des Geistes und des Schutzbereichs der
Erfindung liegend.