-
Diese Erfindung bezieht sich im Allgemeinen auf eine Generierung geheimer Chiffrierschlüssel auf Grundlage eines Kennworts. Bereitgestellt werden Verfahren zum Generieren geheimer Chiffrierschlüssel auf Benutzercomputern auf Grundlage einer Eingabe von Benutzerkennwörtern zusammen mit entsprechenden Vorrichtungen und Computerprogrammen sowie Schlüsselverwaltungsanwendungen, die solche Verfahren einsetzen.
-
Chiffrierschlüssel werden für eine Vielfalt von Zwecken auf persönlichen Benutzereinheiten wie z. B. Personal Computern, Smartphones, Tablets und anderen Computereinheiten verwendet. Derartige Schlüssel können zum Beispiel verwendet werden, um Nachrichten zu unterzeichnen, um den Benutzercomputer gegenüber anderen Einheiten auf seine Berechtigung zu prüfen oder um auf dem Computer gespeicherte sensible Daten zu verschlüsseln bzw. zu entschlüsseln. Der Chiffrierschlüssel darf oft nur dem Benutzercomputer bekannt sein, so dass der Schlüssel nicht mit einem wie auch immer gearteten anderen Computer gemeinsam genutzt wird, der mit dem Benutzercomputer Daten austauscht. Eine sichere Verwaltung solcher geheimer Schlüssel ist schwierig. Der Schlüssel sollte für die erforderliche Verwendung leicht verfügbar, zugleich jedoch gegen unberechtigten Zugriff, z. B. bei Verlust oder Diebstahl des Benutzercomputers, geschützt sein. Da von Benutzern nicht erwartet werden kann, dass sie sich Chiffrierschlüssel merken, kann eine Verwendung eines geheimen, auf einem Benutzercomputer gespeicherten Schlüssels die Eingabe eines gültigen Benutzerkennworts durch den Benutzer erfordern. Allerdings sind typische Benutzerkennwörter kryptographisch schwach und können von einem Dieb anhand eines effizienten Offline-Brute-Force-Angriffs leicht erraten werden. Außerdem verwendet ein Benutzer oft dasselbe oder ein ähnliches Kennwort für andere Zwecke wie beispielsweise für Firmen-eMails, so dass ein Kompromittieren seines Kennworts in anderen Zusammenhängen die Sicherheit geheimer Schlüssel beeinträchtigen kann.
-
Für eine sichere Verwaltung geheimer Schlüssel wurde die Verwendung von vertrauenswürdigen Hardware-Einheiten wie z. B. Smartcards oder TPM-Chips (Trusted Platform Module) vorgeschlagen. Solche Einheiten sind jedoch nicht immer verfügbar, und ihre Verwendung erhöht Kosten und Systemkomplexität. Andere Ansätze beinhalten eine dynamische Generierung des Schlüssels auf dem Benutzercomputer über eine Datenübertragung mit einem oder mehreren Servern über ein Netzwerk. Das Problem des Erhaltens eines (starken) Chiffrierschlüssels aus einem (schwachen) Kennwort mit Hilfe eines oder mehrerer Server ist in der Kryptographie hinreichend bekannt, z. B. in Zusammenhang mit Schlüsselaustausch-Schemata. Schlüsselaustausch-Schemata, bei denen ein Benutzer auf Grundlage eines schwachen Kennworts gegenüber einem Server auf seine Berechtigung geprüft wird und bei denen anschließend ein gemeinsam genutzter Chiffrierschlüssel erhalten wird, werden erörtert in: „Efficient Password-Authenticated Key Exchange Using Human-Memorable Passwords”, Katz et al., EUROCRYPT 2001; und „Universally Composable Password-Based Key Exchange”, Canetti et al., EUROCRYPT 2005. Bei diesen Schemata wird der resultierende Schlüssel sowohl durch den Benutzercomputer als auch durch den Server gemeinsam genutzt, und wenn der Server kompromittiert wird, ist das Kennwort des Benutzers für einen Offline-Brute-Force-Angriff anfällig.
-
Weitere Ansätze haben das oben erwähnte Problem durch die Verwendung einer Mehrzahl von Servern gelöst, die alle kompromittiert sein müssen, bevor ein Angreifer einen Offline-Brute-Force-Angriff gegen den Server starten kann. Beispiele werden beschrieben in: „Two-Server Password-Only Authenticated Key Exchange”, Katz et al., Applied Cryptography and Network Security 2005; und „Practical yet universally composable two-server password-authenticated secret sharing”, Camenisch et al., ACM CCS 2012, wobei der Benutzer selbst einen starken Chiffrierschlüssel wählt, den er mit Hilfe seines Kennworts von zwei Servern abrufen kann. Beide Server müssen kompromittiert sein, bevor das Kennwort des Benutzers offenliegt. Auch
US-Patentschrift 6 829 356 B1 offenbart ein Client-Server-System zum Generieren eines starken Schlüssels wie z. B. eines Chiffrierschlüssels aus einem Benutzerkennwort und eines ephemeren Clientschlüssels mittels einer Interaktion zwischen dem Client und einer Mehrzahl von Servern. Dazu zählen geheime Schlüssel enthaltende Server, die entsprechende Schlüssel enthalten, welche zum Generieren des Schlüssels dienen, sowie Überprüfungsserver, denen der Client anschließend die erfolgreiche Generierung des Schlüssels nachweist.
US Patentschrift 7 359 507 B2 beschreibt des Weiteren Variationen des oben genannten Schemas unter Verwendung rechenintensiver Ganzzahl-Arithmetik.
-
Verbesserte Schemata zur Generierung von Chiffrierschlüsseln auf Kennwortgrundlage wären äußerst wünschenswert.
-
Eine Ausführungsform eines Aspekts der vorliegenden Erfindung stellt ein Verfahren zum Generieren eines geheimen Chiffrierschlüssels des Benutzercomputers auf einem Benutzercomputer bereit, der sich über ein Netzwerk mit einem Server verbinden lässt. Das Verfahren weist auf:
Bereitstellen eines geheimen Benutzerwerts auf dem Benutzercomputer;
Bereitstellen eines geheimen Serverwerts und eines Prüfwerts, der den geheimen Benutzerwert und ein Benutzerkennwort codiert, auf dem Server;
auf dem Benutzercomputer als Reaktion auf eine Eingabe eines Eingabekennworts Codieren des geheimen Benutzerwerts und des Eingabekennworts, um einen ersten Wert zu erzeugen, der dem Prüfwert entspricht, und Übertragen des ersten Werts über das Netzwerk an den Server;
auf dem Server als Reaktion auf die Übertragung des ersten Werts Vergleichen des ersten Werts und des Prüfwerts, um zu prüfen, ob das Eingabekennwort gleich dem Benutzerkennwort ist, und wenn dies der Fall ist, Codieren des ersten Werts und des geheimen Serverwerts, um einen zweiten Wert zu erzeugen und den zweiten Wert über das Netzwerk an den Benutzercomputer zu übertragen; und
auf dem Benutzercomputer als Reaktion auf die Übertragung des zweiten Werts Generieren des geheimen Chiffrierschlüssels durch Codieren des zweiten Werts, des Eingabekennworts und des geheimen Benutzerwerts.
-
Verfahren, welche die Erfindung enthalten, können mittels einer Interaktion mit einem einzigen Server eine sichere Generierung eines geheimen Schlüssels eines Benutzercomputers auf Kennwortgrundlage bereitstellen. Der Schlüssel kann bei Eingabe eines gültigen Kennworts wann immer erforderlich generiert werden. Der Server kann prüfen, ob das Eingabekennwort korrekt ist, und sendet dem Benutzercomputer nur dann die für eine Schlüsselgenerierung notwendigen Daten, wenn dies der Fall ist. Weder das Benutzerkennwort noch der Schlüssel sind dem Server jemals bekannt. Mit den verschiedenen Werten, die bei der Durchführung des Protokolls verwendet werden, lässt sich der Schlüssel auf eine Art und Weise effizient generieren, die gegen Offline-Angriffe zum Erraten von Kennwörtern geschützt ist, falls entweder der Server oder der Benutzercomputer kompromittiert ist. Darüber hinaus können die Erfindung enthaltende Verfahren mittels einfacher, wenig aufwändiger Rechenoperationen realisiert werden. Ausführungsformen der Erfindung bieten somit elegante und überaus praktische Systeme für eine sichere Generierung geheimer Schlüssel.
-
Der geheime Benutzerwert und der geheime Serverwert können Zufallswerte oder wie auch immer geartete (vorzugsweise kryptographisch starke) Schlüssel aufweisen, die nur dem Benutzercomputer bzw. dem Server bekannt sind. Diese geheimen Werte können als ein Ergebnis eines Vorabspeicherns im Arbeitsspeicher ihrer betreffenden Einheiten bereitgestellt werden, oder sie können über Schritte aktiv bereitgestellt werden, die in bevorzugten, die Erfindung enthaltenden Verfahren durchgeführt werden, z. B. während einer Einrichtungsprozedur. Insbesondere beinhalten die bevorzugten Verfahren in einer Einrichtungsprozedur und vor einem Erzeugen des Schlüssels:
auf dem Benutzercomputer als Reaktion auf eine Eingabe des Benutzerkennworts Codieren des geheimen Benutzerwerts und des Benutzerkennworts, um den Prüfwert zu erzeugen, und Übertragen des Prüfwerts über das Netzwerk an den Server; und
auf dem Server Speichern des empfangenen Prüfwerts.
-
Die Einrichtungsprozedur kann praktischerweise beinhalten, den geheimen Benutzerwert auf dem Benutzercomputer zu generieren und zu speichern und den geheimen Serverwert auf dem Server zu generieren und zu speichern. Eine solche Benutzerprozedur kann unabhängige Einrichtungsoperationen für den Server und den Benutzercomputer aufweisen. Die Einrichtungsprozedur kann außerdem eine erstmalige Generierung des Schlüssels beinhalten. Im Besonderen kann die Einrichtungsprozedur beinhalten:
auf dem Server Codieren des empfangenen Prüfwerts und des geheimen Serverwerts, um den zweiten Wert zu erzeugen, und Übertragen des zweiten Werts über das Netzwerk an den Benutzercomputer; und
auf dem Benutzercomputer als Reaktion auf die Übertragung des zweiten Werts erstmaliges Erzeugen des ersten Chiffrierschlüssels durch Codieren des zweiten Werts, des Benutzerkennworts und des geheimen Benutzerwerts, Verwenden des Schlüssels in einer Verschlüsselungsoperation und Löschen des Benutzerkennworts, des Prüfwerts, des zweiten Werts und des Schlüssels nach der Verwendung.
-
Die erste Verwendung des Schlüssels in der Einrichtungsprozedur kann daraufhin den Schlüssel definieren, der für eine Verwendung in anschließenden Verschlüsselungsoperationen benötigt wird, z. B. zum Entschlüsseln eines Datenträgers, der unter Verwendung des in der Einrichtungsprozedur generierten Schlüssels verschlüsselt wurde. Der Schlüssel kann durch den Benutzer bei Bedarf neu generiert werden, ohne dass hierfür Daten gespeichert werden müssen, mit denen ein Angreifer durch eine unberechtigte Verwendung des Benutzercomputers den Schlüssel oder das Kennwort erhalten könnte.
-
Bevorzugte Verfahren können des Weiteren beinhalten:
Bereitstellen eines Benutzerbezeichners auf dem Computer zum eindeutigen Identifizieren des Benutzercomputers gegenüber dem Server;
auf dem Server Bereitstellen des Benutzerbezeichners mit dem Prüfwert für den Benutzercomputer; und
auf dem Benutzercomputer Übertragen des Benutzerbezeichners mit dem ersten Wert an den Server.
-
Ein derartiger Benutzerbezeichner kann im Allgemeinen ein oder mehrere Elemente aufweisen. Für eine einfache Realisierung und bessere Sicherheit kann der Benutzerbezeichner auch in Codierprozessen verwendet werden, die bei der Schlüsselerzeugungsoperation durchgeführt werden. Bevorzugte Verfahren können daher beinhalten: auf dem Benutzercomputer Codieren des Benutzerbezeichners in mindestens dem ersten Wert oder dem Chiffrierschlüssel und vorzugsweise in beiden; und/oder auf dem Server Codieren des Benutzerbezeichners in dem zweiten Wert. Im Besonderen können bevorzugte Verfahren auch beinhalten:
auf dem Server Bereitstellen eines Serverbezeichners zum eindeutigen Identifizieren des Servers gegenüber dem Benutzercomputer;
auf dem Benutzercomputer Abrufen des Serverbezeichners und Codieren des Serverbezeichners in dem ersten Wert;
auf dem Server Codieren des Serverbezeichners in dem zweiten Wert; und
auf dem Benutzercomputer Codieren des Serverbezeichners in dem Chiffrierschlüssel.
-
In bevorzugten Ausführungsformen enthalten somit die verschiedenen, für eine Realisierung des Protokolls übertragenen Werte Daten, die das Computer-Server-Paar eindeutig identifizieren. Der Benutzercomputer kann den Serverbezeichner abrufen, indem er diesen Bezeichner von einer beliebigen geeigneten Stelle erhält. Je nach Realisierung kann der Serverbezeichner zum Beispiel dynamisch von dem Server erhalten werden oder auf dem Benutzercomputer vorab gespeichert werden.
-
Für eine sichere Schlüsselverwaltung bei typischen Anwendungen können der Schlüssel und die sensiblen Protokolldaten nach der Verwendung gelöscht werden, da der Schlüssel neu generiert werden kann, wann immer der berechtigte Benutzer dies benötigt. Somit stellt eine Ausführungsform eines zweiten Aspekts der Erfindung ein Verfahren zum Verwalten eines geheimen Chiffrierschlüssels des Benutzercomputers auf einem Benutzercomputer bereit, der sich über ein Netzwerk mit einem Server verbinden lässt. Das Verfahren kann aufweisen: Erzeugen des geheimen Chiffrierschlüssels durch ein Verfahren gemäß dem ersten Aspekt der Erfindung; und auf dem Computer Verwenden des geheimen Chiffrierschlüssels in einer Verschlüsselungsoperation sowie Löschen des Eingabekennworts, des ersten Werts, des zweiten Werts und des Schlüssels nach der Verwendung. Der Schlüssel kann zum Beispiel zum Entschlüsseln von Daten verwendet werden, die zuvor unter Verwendung des Schlüssels auf dem Benutzercomputer verschlüsselt wurden.
-
Eine Ausführungsform eines dritten Aspekts der Erfindung stellt ein Verfahren zum Verschlüsseln und Entschlüsseln von Daten unter Verwendung eines geheimen Chiffrierschlüssels des Benutzercomputers auf einem Benutzercomputer bereit, der sich über ein Netzwerk mit einem Server verbinden lässt. Das Verfahren kann aufweisen:
Erzeugen des geheimen Chiffrierschlüssels durch ein Verfahren gemäß dem ersten Aspekt der Erfindung, wobei der Schlüssel erstmals während einer Einrichtungsprozedur generiert wird, wie sie oben beschrieben wird;
beim erstmaligen Erzeugen des Schlüssels auf dem Benutzercomputer Verwenden des Schlüssels zum Verschlüsseln von auf dem Benutzercomputer gespeicherten Daten; und
beim Erzeugen des Schlüssels auf dem Benutzercomputer nach dem ersten Mal Verwenden des Schlüssels zum Entschlüsseln der auf dem Benutzercomputer gespeicherten Daten.
-
Eine Ausführungsform eines vierten Aspekts der Erfindung stellt einen Benutzercomputer zum Austauschen von Daten mit einem Server über ein Netzwerk bereit, um einen geheimen Chiffrierschlüssel des Benutzercomputers zu generieren, wobei der Server einen geheimen Serverwert und einen Prüfwert speichert, der einen geheimen Benutzerwert des Benutzercomputers und ein Benutzerkennwort codiert. Der Benutzercomputer kann einen Arbeitsspeicher zum Speichern des geheimen Benutzerwerts, eine Benutzeroberfläche, eine Datenübertragungsschnittstelle zum Austauschen von Daten mit dem Server über das Netzwerk und Steuerlogik aufweisen, die so gestaltet ist, dass sie:
als Reaktion auf eine Eingabe über die Benutzeroberfläche den geheimen Benutzerwert und das Eingabekennwort codiert, um einen ersten Wert zu erzeugen, der dem Prüfwert entspricht, und den ersten Wert über die Datenübertragungsschnittstelle an den Server überträgt; und
als Reaktion auf die Übertragung eines zweiten Werts, der durch Codieren des ersten Werts und des geheimen Serverwerts erzeugt wurde, durch den Server den geheimen Chiffrierschlüssel generiert, indem sie den zweiten Wert, das Eingabekennwort und den geheimen Benutzerwert codiert.
eine Ausführungsform eines fünften Aspekts der Erfindung stellt einen Server zur Verwendung beim Erzeugen eines geheimen Chiffrierschlüssels eines Benutzercomputers bereit, der einen geheimen Benutzerwert speichert und sich über ein Netzwerk mit dem Server verbinden lässt. Der Server kann aufweisen:
einen Arbeitsspeicher zum Speichern eines geheimen Serverwerts und eines Prüfwerts, der den geheimen Benutzerwert und ein Benutzerkennwort codiert;
eine Datenübertragungsschnittstelle zum Austauschen von Daten mit dem Benutzercomputer über das Netzwerk; und
Steuerlogik, die so gestaltet ist, dass sie als Reaktion auf einen Empfang eines erstens Werts, der dem Prüfwert entspricht und den geheimen Benutzerwert und ein Eingabekennwort codiert, von dem Benutzercomputer den ersten Wert und den Prüfwert vergleicht, um zu prüfen, ob das Eingabekennwort gleich dem Benutzerkennwort ist, und wenn dies der Fall ist, den ersten Wert und den geheimen Serverwert codiert, um einen zweiten Wert zu erzeugen, und den zweiten Wert über die Datenübertragungsschnittstelle an den Benutzercomputer überträgt.
-
Die Erfindung stellt des Weiteren ein System bereit, das einen Benutzercomputer gemäß Ausführungsformen des vierten Aspekts der Erfindung und einen Server gemäß Ausführungsformen des fünften Aspekts der Erfindung aufweist.
-
Weitere Aspekte der Erfindung stellen ein Computerprogramm und Computerprogrammprodukt bereit.
-
Sofern Merkmale hier mit Bezug auf eine Ausführungsform der Erfindung beschrieben sind, können entsprechende Merkmale gegebenenfalls auch in Ausführungsformen eines weiteren Aspekts der Erfindung bereitgestellt werden.
-
Im Folgenden werden beispielhafte und mit Blick auf die beigefügten Zeichnungen bevorzugte Ausführungsformen der Erfindung beschrieben, wobei:
-
1 eine schematische Darstellung eines Datenverarbeitungssystems zum Realisieren eines Schlüsselgenerierungsverfahrens ist, das die Erfindung enthält;
-
die 2 und 3 Schritte angeben, die bei der Realisierung des Schlüsselgenerierungsverfahrens durchgeführt werden;
-
die 4a und 4b betreffende Einrichtungsoperationen für einen Server und einen Benutzercomputer des Systems aus 1 in einer bevorzugten Ausführungsform des Schlüsselgenerierungsverfahrens nennen; und
-
5 eine Schlüsselgenerierungsoperation mit dem bevorzugten Verfahren angibt.
-
1 zeigt ein beispielhaftes Datenverarbeitungssystem 1 zum Realisieren eines Schlüsselgenerierungsschemas, das die Erfindung enthält. Das System 1 weist einen Server 2 und einen Benutzercomputer 3 auf, die für einen Datenaustausch über ein Datenübertragungsnetzwerk 4 gestaltet sind. Das Netzwerk 4 kann im Allgemeinen ein oder mehrere Komponentennetzwerke oder Verbundnetzwerke wie z. B. das Internet aufweisen. In diesem Beispiel ist der Benutzercomputer 3 durch einen Universal-PC (Personal Computer) realisiert, und der Server 2 ist als ein Universalcomputer ausgeführt, der eine Serverfunktionalität für einen Datenaustausch mit entfernt angeordneten Computern über das Netzwerk 4 realisiert. Der Benutzer-PC 3 wird hier einfach so gezeigt, dass er eine Datenübertragungsschnittstelle 5 zum Austauschen von Daten mit dem Server 2 über das Netzwerk 4, eine Schlüsselgeneratorlogik 6 zum Bereitstellen einer Funktionalität zur Verwendung bei dem zu beschreibenden Schlüsselgenerierungsschema, eine Benutzerschnittstelle 7 für Dateneingabe-/Datenausgabe-Interaktionen mit dem PC-Benutzer und einen Arbeitsspeicher 8 aufweist. Der Arbeitsspeicher 8 speichert Daten, die durch die Schlüsselgeneratorlogik 6 bei der Durchführung des Schlüsselgenerierungsschemas verwendet werden. Hierzu zählt ein als Benutzerschlüssel S bezeichneter geheimer Benutzerwert, der nur dem Benutzer-PC 3 bekannt ist. Der abgebildete Server 2 weist eine Datenübertragungsschnittstelle 9, eine Serverlogik 10, die eine Funktionalität zur Verwendung bei dem weiter unten näher erläuterten Schlüsselgenerierungsschema bereitstellt, und einen Arbeitsspeicher 11 auf, der Daten speichert, die von der Logik 10 während der Durchführung verwendet werden. Dazu zählen ein als Serverschlüssel SK bezeichneter geheimer Serverschlüssel, der nur dem Server 2 bekannt ist, und ein weiter unten ausführlicher beschriebener Prüfwert VC.
-
Die Schlüsselgenerierungslogik 6 und die Serverlogik 10 könnten generell in Hardware, in Software oder in einer Kombination hiervon realisiert werden. In diesem Beispiel ist die Schlüsselgenerierungslogik 6 praktischerweise durch Software realisiert, die auf dem Benutzercomputer 3 läuft, um den Computer zur Durchführung der weiter unten näher erläuterten Funktionen zu veranlassen. Entsprechend ist die Serverlogik 10 praktischerweise durch Software realisiert, um den Computer 2 so zu steuern, dass er die beschriebene Funktionalität realisiert.
-
Das durch das System 1 realisierte Schlüsselgenerierungsverfahren ermöglicht dem Benutzer-PC 3, im Zusammenwirken mit dem Server 2 einen (starken) Chiffrierschlüssel K zu generieren, der nur dem Benutzer-PC bekannt ist. Zur erfolgreichen Generierung des Schlüssels K ist die Eingabe eines (schwachen) Benutzerkennworts P an dem Benutzercomputer 3 durch den Benutzer erforderlich.
-
Der Schlüssel kann nur generiert werden, wenn der Server 2 überprüft hat, dass das Benutzerkennwort korrekt ist.
-
Die 2 und 3 geben einen Überblick über das Schlüsselgenerierungsschema in Gestalt von entsprechenden Ablaufplänen, welche die wichtigsten Schritte angeben, die bei der Durchführung des Schemas stattfinden. 2 gibt die Schritte an, die bei einer Einrichtungsprozedur durchgeführt werden, und 3 gibt die Schritte des anschließenden Verfahrens zur Schlüsselgenerierung an. Mit Blick auf 2 werden nach Beginn der Einrichtungsprozedur, wie in Schritt 20 angegeben, zunächst der Benutzerschlüssel S und der Serverschlüssel SK generiert und durch den Benutzer-PC bzw. Server gespeichert. Dieser durch Schritt 21 dargestellte Prozess kann durch eine Zufallserzeugung von kryptographisch starken Werten in der Logik 6 bzw. 10 erfolgen, d. h. von Werten mit einer ausreichenden Entropie (genügend kryptographisch zufälligen Bits), um es einem Angreifer unmöglich zu machen, die Werte zu erraten. Wie in Schritt 22 angegeben, wird danach durch den Benutzer über die Benutzerschnittstelle 7 des PCs 3 ein Benutzerkennwort P eingegeben und durch die Schlüsselgeneratorlogik 6 empfangen. Als Reaktion darauf codiert die Logik 6 (mindestens) den Benutzerschlüssel S und das Benutzerkennwort P, um einen Prüfwert VC zu erzeugen. Der Prüfwert kann anhand eines beliebigen Algorithmus generiert werden, wobei konkrete Beispiele weiter unten genannt werden. In Schritt 24 wird der Prüfwert VC über die Schnittstelle 5 und das Netzwerk 4 an den Server 2 übertragen. (Wenn ein Wert wie hier beschrieben an eine Einheit übertragen wird, kann der Wert generell als solcher gesendet werden (im Interesse der Sicherheit während der Übertragung vorzugsweise nach einer Verschlüsselung), oder er kann in eine andere Funktion eingebettet werden, so dass der Wert durch die empfangende Einheit abgeleitet werden kann.) Der Prüfwert VC wird über die Schnittstelle 9 von der Serverlogik 10 empfangen, und in Schritt 25 wird der Prüfwert für den Benutzer-PC 3 in dem Serverarbeitsspeicher 11 gespeichert. Hiermit sind die für die anschließende Schlüsselgenerierung notwendigen Einrichtungsschritte abgeschlossen. Bei manchen Anwendungen kann die Einrichtungsprozedur allerdings ein erstmaliges Erzeugen und Verwenden des Schlüssels K beinhalten. Ein konkretes Beispiel wird weiter unten beschrieben. Wie durch dieses Beispiel veranschaulicht wird, kann darüber hinaus die Einrichtungsprozedur aus 2 in der Praxis mittels unabhängiger Einrichtungsoperationen für den Server 2 und den Benutzer-PC 3 realisiert werden.
-
Mit Blick auf 3 gibt der Benutzer zu Beginn der Schlüsselgenerierungsoperation, wie in Schritt 30 angegeben, in Schritt 31 am Benutzer-PC 3 einen Kennwortversuch P' ein. Als Reaktion auf das Eingabekennwort P' codiert die Logik 6 in Schritt 32 das Eingabekennwort P' und den Benutzerschlüssel S aus dem Arbeitsspeicher 8, um einen ersten Wert V1 zu erzeugen, der dem Prüfwert VC entspricht. Der erste Wert V1 wird hier auf dieselbe Art und Weise wie der Prüfwert VC unter Verwendung desselben Codieralgorithmus erzeugt, verwendet jedoch anstelle des Benutzerkennworts P, das für die Einrichtungsprozedur eingegeben wurde, das Eingabekennwort P'. In Schritt 33 wird der erste Wert V1 über das Netzwerk 4 an den Server 2 übertragen. Nach dem Empfang von V1 vergleicht die Serverlogik 10 in Schritt 34 den ersten Wert V1 und den im Arbeitsspeicher 11 gespeicherten Prüfwert VC, um zu prüfen, ob das Eingabekennwort P' gleich dem Benutzerkennwort P ist. Wenn das Eingabekennwort hier korrekt ist, sind im Besonderen die beiden Werte V1 und VC identisch. Wenn das Eingabekennwort P' inkorrekt ist (dargestellt durch „Nein” (N) in Entscheidungsblock 35), bricht die Serverlogik das Schlüsselgenerierungsprotokoll ab, wie in Schritt 36 angegeben, und der Prozess wird beendet. Wenn das Eingabekennwort jedoch korrekt ist („Ja” (J) in Entscheidungsblock 35), codiert die Serverlogik 10 (mindestens) den ersten Wert V1 (der hier mit VC identisch ist) und den vorab in dem Arbeitsspeicher 11 gespeicherten Serverschlüssel SK, um in Schritt 37 einen zweiten Wert V2 zu erzeugen. Wie zuvor, kann auch hier jeder beliebige Codieralgorithmus verwendet werden, wobei bevorzugte Beispiele weiter unten genannt werden. In Schritt 38 wird der zweite Wert V2 über das Netzwerk 4 an den Benutzer-PC 3 übertragen. Nach dem Empfang von V2 generiert die Schlüsselgeneratorlogik in Schritt 39 den geheimen Chiffrierschlüssel K, indem sie (mindestens) den zweiten Wert V2, das Eingabekennwort P' und den in dem Arbeitsspeicher 8 gespeicherten Benutzerschlüssel S codiert. Auch hierfür werden weiter unten Beispiele für bevorzugte Algorithmen genannt. Danach ist der Prozess zur Schlüsselgenerierung abgeschlossen. Der Schlüssel K kann wie erforderlich auf dem Benutzer-PC 3 verwendet und nach der Verwendung gelöscht werden, um den Schlüssel gegen Diebstahl oder unberechtigte Verwendung des PCs 3 zu schützen. Die Steuerlogik 8 löscht zudem das Eingabekennwort P', den ersten Wert und den zweiten Wert V2, so dass nur die Daten auf dem PC 3 gespeichert werden, die für eine berechtigte Schlüsselgenerierung durch den Kennwortinhaber benötigt werden.
-
Im Folgenden wird eine bevorzugte Realisierung des oben beschriebenen Schemas ausführlicher beschrieben. In diesem Beispiel wird das Schlüsselgenerierungsschema bei einer Anwendung zur Datenträgerverschlüsselung bzw. -entschlüsselung verwendet, bei welcher der Schlüssel K ein Chiffrierschlüssel ist. Das Protokoll beinhaltet im Allgemeinen eine Einrichtungsprozedur und eine Schlüsselgenerierungsprozedur wie oben beschrieben, wobei die Einrichtungsprozedur hier jedoch mittels unabhängiger Teilprotokolle für eine Einrichtung des Servers und des Benutzer-PCs realisiert wird. Das Teilprotokoll zur Servereinrichtung, bei dem der Server 2 sein kryptographisches Material generiert, ist in 4a schematisch dargestellt. Das Teilprotokoll zur Einrichtung der Einheit, bei dem sich der Benutzer-PC 3 bei dem Server registriert und zuerst den Schlüssel K generiert, ist in 4b schematisch dargestellt. 5 ist eine schematische Darstellung der anschließenden Schlüsselgenerierung oder des Abruf-Teilprotokolls, bei dem der Schlüssel K mit Hilfe des Servers durch den Benutzercomputer neu generiert wird. Für eine erhöhte Sicherheit bei dieser Ausführungsform finden alle Protokollübertragungen zwischen dem Benutzer-PC 3 und dem Server 2 über einen vorwärtssicheren Kanal C mit den folgenden Eigenschaften statt:
- – der Kanal wird über eine Datenübertragungsverbindung betrieben;
- – der Kanal ermöglicht einer ersten Partei, eine Bitfolge mit einer willkürlichen Länge an eine zweite Partei zu senden, und der zweiten Partei, mit einer Bitfolge mit einer willkürlichen Länge zu antworten;
- – die zweite Partei wird gegenüber der ersten Partei auf ihre Berechtigung geprüft;
- – die Bitfolgen werden vertraulich gesendet und vor einer Änderung durch eine dritte Partei geschützt;
- – die Vertraulichkeit der gesendeten Bitfolgen wird nicht kompromittiert, wenn eine oder beide Parteien kompromittiert werden, nachdem der Kanal abgebaut wurde.
-
Diese Eigenschaften von Kanal C lassen sich auf eine hinlängliche bekannte Art erreichen, z. B. anhand des SSL-Protokolls (Secure Sockets Layer) oder TLS-Protokolls (Transport Layer Security). In einem weiteren Beispiel könnten beide Parteien einen gemeinsam genutzten, geheimen Schlüssel aufweisen, mit dem sie einen Diffie-Hellman-Schlüsselaustausch auf seine Berechtigung prüfen. Der aus dem Schlüsselaustauschprotokoll resultierende Schlüssel kann dann als der Sitzungsschlüssel für den Kanal verwendet werden. In dem folgenden Beispiel besitzt die zweite Partei (Server 2) jedoch ein Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle (Certification Authority, CA) unterzeichnet wurde, und der Kanal C wird mit dem TLS-Protokoll über das Internet realisiert.
-
Servereinrichtung
-
4a veranschaulicht die Einrichtungsoperation für den Server 2 mit Blick auf die Interaktion zwischen dem Server und der Zertifizierungsstelle CA, deren jeweilige Operationen in der linken bzw. rechten Spalte der Figur dargestellt sind. Der Server führt das Teilprotokoll ein Mal durch. In Schritt (a) wählt die Serverlogik 10 einen eindeutigen Serverbezeichner SID aus, um den Server 2 gegenüber den Benutzercomputern, denen er die Schlüsselgenerierung bereitstellt, eindeutig zu identifizieren. Zusätzlich wählt die Serverlogik einen zufälligen Serverschlüssel (Serverschlüssel SK) aus, der mindestens eine Entropie von η Bit beinhaltet, wobei η ein Sicherheitsparameter ist, der nach Wunsch gesetzt werden kann. In diesem konkreten Beispiel ist η = 128. In Schritt (b) generiert die Serverlogik 10 Schlüsselmaterial, mit dem vorwärtssichere Kanäle aufgebaut werden können. Hier weist dies einen öffentlichen Anteil SC und einen privaten Anteil SP (privater Schlüssel) auf, wobei der öffentliche Anteil SC durch die Interaktion mit der Zertifizierungsstelle CA generiert wird und ein Zertifikat in einem öffentlichen Schlüssel aufweist, der einem privaten Schlüssel SP entspricht. In Schritt (c) speichert der Server SK, SID, SC und SP in seinem internen Speicher 11. In Schritt (d) veröffentlicht der Server das Zertifikat SC zusammen mit seinem Serverbezeichner SID, wodurch (SID, SC) den mit dem Netzwerk 4 verbundenen Computern verfügbar gemacht wird.
-
Einrichtung der Einheit
-
4b veranschaulicht die Einrichtungsoperation für den Benutzer-PC 3 mit Blick auf die Interaktion zwischen dem Benutzer, dem Benutzer-PC 3 und dem Server 2, deren jeweilige Operationen in der linken bzw. rechten Spalte der Figur dargestellt sind. Der Benutzer-PC 3 führt dieses Teilprotokoll ein Mal aus, nachdem der Server 2 die oben beschriebene Servereinrichtung abgeschlossen hat. In Schritt (a) wählt die Schlüsselgeneratorlogik 6 einen geheimen Zufallswert (Benutzerschlüssel S) aus, der eine Entropie von mindestens η Bit aufweist. Die Logik 6 generiert außerdem Identitätsdaten, die einen eindeutigen Benutzerbezeichner UID aufweisen, um den Benutzer-PC gegenüber dem Server 2 eindeutig zu identifizieren. Hier beinhalten die Identitätsdaten des Weiteren einen Authentifikator UA. Der Wert UA ist vorzugsweise ein kryptographisch starker Wert und kann aus einem zufällig gewählten Wert mit einer Entropie von mindestens η Bit bestehen. In einem weiteren Beispiel könnte UA durch ein Hashing des Benutzerschlüssels S mit einer kollisionssicheren Hash-Funktion generiert werden. Durch die Bereitstellung sowohl von UID als auch von UA in diesem Beispiel kann UID als einer komfortabler (schwacher) Wert wie beispielsweise ein Benutzername oder eine eMail-Adresse ausgewählt werden, während UA einen kryptographisch starken Wert bereitstellt, der dazu verwendet wird, den Benutzer-PC in anschließenden Protokollschritten gegenüber dem Server sicher zu identifizieren.
-
In Schritt (b) aus 4b ruft der Benutzer-PC 3 den Serverbezeichner SID und das Serverzertifikat SC für den Server 2 ab. Diese Daten können zum Beispiel von dem Server 2 erhalten werden, oder sie können nach der Veröffentlichung während der Servereinrichtung auf dem Benutzer-PC 3 vorab gespeichert werden. Im Zuge dieses Prozesses wird das öffentliche Zertifikat SC auf bekannte Art und Weise durch die Logik 6 auf seine Berechtigung geprüft (üblicherweise unter Verwendung eines öffentlichen Schlüssels der Zertifizierungsstelle CA). Als Nächstes fordert die Logik in Schritt (c) den Benutzer zur Eingabe eines Kennworts auf, woraufhin der Benutzer das Benutzerkennwort P eingibt. In Schritt (d) generiert die Logik 6 dann den Prüfwert VC, indem sie eine Bitfolge hasht, die den Benutzerschlüssel S, das Kennwort P und Daten aufweist, die das PC-Server-Paar eindeutig identifizieren, in diesem Fall das Triplet (UID, SID, SC). In diesem Beispiel wird der erste Wert V1 wie folgt generiert:
VC ← H(0x01, S, P, UID, SID, SC)
wobei: H eine kollisionssichere Hash-Funktion wie z. B. die Hash-Funktion SHA-256 ist; und
der Hexadezimalwert 0x01 (und entsprechende Werte in unten genannten Funktionen) sicherstellt, dass Eindeutigkeit darüber besteht, auf welchen Schritt des Protokolls sich die zu hashende Bitfolge bezieht.
-
In Schritt (e) aus 4b richten die Einheit und der Server einen vorwärtssicheren Kanal C ein, der aus dem Serverzertifikat SC erhalten wird, wobei der Server seine gespeicherten Werte SK, SID, SC und SP während dieses Vorgangs aus dem Arbeitsspeicher 11 abruft. In Schritt (f) sendet der Benutzer-PC die Identitätsdaten UID, UA mit dem Prüfwert VC über den Kanal C an den Server 2. Nach dem Empfang prüft die Serverlogik 10 in Schritt (g), dass der Benutzerbezeichner UID eindeutig ist, d. h. dass sie UID noch nicht kennt. Wenn UID nicht eindeutig ist, löscht die Serverlogik alle Daten, die nicht ausdrücklich in dem oben erwähnten Arbeitsspeicher 11 gespeichert werden müssen (d. h. alle Daten mit Ausnahme von SK, SID, SC und SP), und bricht das Protokoll ab. In diesem Fall kann eine geeignete Fehlermeldung an den PC 3 gesendet werden. Wenn UID eindeutig ist, speichert der Server das Triplet (UID, UA, VC) in dem Arbeitsspeicher 11. Als Nächstes berechnet die Serverlogik in Schritt (h) den zweiten Wert V2, indem sie eine Bitfolge hasht, die den Prüfwert VC, den Serverschlüssel SK und Daten aufweist, die das PC-Server-Paar eindeutig identifizieren, hier das Triplet (UID, SID, SC). In diesem Beispiel wird der zweite Wert V2 wie folgt generiert:
V2 ← H(0x02, VC, SK, UID, SID, SC)
-
In Schritt (i) sendet der Server V2 über den Kanal C an den Benutzer-PC und löscht alle Daten, die nicht ausdrücklich in dem oben erwähnten Arbeitsspeicher 11 gespeichert werden müssen.
-
Nach dem Empfang des zweiten Werts V2 speichert die Logik 6 des Benutzer-PCs 3 in Schritt (j) S, UID, UA, SID, und SC in ihrem internen Speicher 8. In Schritt (k) berechnet die Logik 6 daraufhin erstmals den kryptographisch starken Schlüssel K, indem sie eine Bitfolge hasht, die das Benutzerkennwort P, den zweiten Wert V2 und den Benutzerschlüssel S aufweist, hier zusammen mit dem Triplet (UID, SID, SC), welches das PC-Server-Paar eindeutig kennzeichnet. in diesem Beispiel wird der Schlüssel K wie folgt generiert:
K ← H(0x03, P, S, V2, UID, SID, SC)
-
In diesem Szenario verwendet die Logik 6 dann in Schritt (I) den Schlüssel, um die Festplatte des PCs 3 zu verschlüsseln. Nach der Verwendung des Schlüssels löscht die Logik 6 in Schritt (m) alle Daten (einschließlich des Schlüssels K, des Kennworts P, des Prüfwerts VC und des zweiten Werts V2), die nicht ausdrücklich in dem oben erwähnten Arbeitsspeicher 8 gespeichert werden müssen. Diese Aktion wird praktischerweise beim Herunterfahren des PCs 3 durchgeführt.
-
Schlüsselabruf
-
5 veranschaulicht das Abruf-Teilprotokoll zum Neugenerieren des Schlüssels auf dem Benutzer-PC 3. Dieses Teilprotokoll kann mehrere Male ausgeführt werden, nachdem der Benutzer-PC und der Server die oben beschriebenen Einrichtungsteilprotokolle abgeschlossen haben. In Schritt (a) dieser Operation fordert die Logik 6 den Benutzer zur Eingabe eines Kennworts auf, woraufhin der Benutzer einen Kennwortversuch P' eingibt. In Schritt (b) ruft die Logik 6 S, UID, UA, SID und SC aus dem Arbeitsspeicher 8 ab. In Schritt (c) berechnet die Logik 6 dann den ersten Wert V1, der dem Prüfwert VC entspricht, als:
V1 ← H(0x01, S, P', UID, SID, SC)
-
In Schritt (d) richten die Einheit und der Server daraufhin einen vorwärtssicheren Kanal C ein, der aus dem Serverzertifikat SC erhalten wird, wobei der Server seine gespeicherten Werte SK, SID, SC und SP während dieses Vorgangs aus dem Arbeitsspeicher 11 abruft. In Schritt (e) sendet der Benutzer-PC die Identitätsdaten UID, UA mit dem ersten Wert V1 über den Kanal C an den Server 2. Nach dem Empfang prüft die Serverlogik 10 in Schritt (f), dass sie zuvor ein Triplet gespeichert hat, bei dem die ersten beiden Elemente UID, UA lauten. Wenn kein solches Triplet gefunden wird, löscht der Server alle Daten, die nicht ausdrücklich in dem oben erwähnten Arbeitsspeicher 11 gespeichert werden müssen, und bricht das Protokoll ab. Die Serverlogik prüft zudem, ob ein Begrenzungsmechanismus aktiviert wurde, der durch den Server für die UID verwaltet wird. Begrenzungsmechanismen sind in der Kryptographie hinlänglich bekannt und stellen Prozeduren bereit, um Anmeldungen durch Systembenutzer zu überwachen und auf Grundlage des Anmeldeverhaltens zu ermitteln, ob ein bestimmtes Benutzerkonto gesperrt werden sollte. Begrenzungsmechanismen sperren Benutzerkonten in der Regel, wenn das Anmeldeverhalten ein vordefiniertes Kriterium erfüllt, das auf eine möglicherweise böswillige Aktion hindeutet. In diesem Beispiel kann der Begrenzungsmechanismus für eine UID aktiviert sein, wenn innerhalb einer gegebenen Zeitspanne und/oder unter Verwendung eines inkorrekten Kennworts mehr als ein Schwellenwert von Abrufanforderungen für die UID erfolgt. Wenn der Begrenzungsmechanismus für die UID aktiviert ist, verweigert die Serverlogik die Bedienung dieser Abrufanforderung und sendet eine Fehlermeldung wie z. B. „Verbindung wurde begrenzt” zurück an den Benutzer-PC 2. Der Server kann alle Daten löschen, die nicht ausdrücklich in dem oben erwähnten Arbeitsspeicher 11 gespeichert werden, und das Protokoll abbrechen. Nach dem Empfang einer solchen Fehlermeldung kann die Logik 6 des PCs 3 alle Daten löschen, die nicht ausdrücklich in dem oben erwähnten Arbeitsspeicher 8 gespeichert werden, und das Protokoll abbrechen.
-
Wenn alle Prüfungen in Schritt (f) bestanden werden, prüft der Server in Schritt (g), dass das dritte Element VC in dem gespeicherten Triplet für UID, UA gleich dem empfangenen ersten Wert V1 ist Wenn dies nicht der Fall ist, kann der Server eine Meldung „falsches Kennwort” über den Kanal C an den PC 3 senden. Der Server und der PC können dann wie zuvor alle unwesentlichen Protokolldaten löschen und das Protokoll abbrechen. Der Begrenzungsmechanismus der Serverlogik 10 zeichnet außerdem dieses Kennwortfehler-Ereignis auf um zu ermitteln, ob das Konto für anschließende Durchführungen des oben beschriebenen Schritts (f) begrenzt werden sollte.
-
Wenn das Kennwort P' in Schritt (g) als gültig betrachtet wird, entsprechen die nächsten Schritte im Wesentlichen den betreffenden Schritten der oben beschriebenen Operation zur Einrichtung der Einheit. Somit berechnet die Serverlogik in Schritt (h) den zweiten Wert V2 als:
V2 ← H(0x02, V1, SK, UID, SID, SC)
-
In Schritt (i) sendet der Server V2 über den Kanal C an den Benutzer-PC und löscht dann wie zuvor alle unwesentlichen Daten. Nachdem in Schritt (i) der zweite Wert V2 erhalten wurde, berechnet die Logik 6 den Schlüssel K als:
K ← H(0x03, P', S, V2, UID, SID, SC)
-
Danach verwendet die Logik 6 den Schlüssel in Schritt (j), um die Festplatte des PCs 3 zu entschlüsseln. Wenn die Einheit den Schlüssel nicht mehr benötigt, löscht die Logik in Schritt (I) wie zuvor alle unwesentlichen Daten. Auch diese Aktion wird praktischerweise beim Herunterfahren des PCs 3 durchgeführt.
-
Oben beschriebene Ausführungen machen deutlich, dass der geheime Chiffrierschlüssel K bei einer Benutzereingabe eines gültigen Kennworts wann immer erforderlich durch den PC 2 generiert werden kann. Die zum Generieren des Schlüssels benötigten Daten können durch den Benutzer-PC nur erhalten werden, wenn (1) der Benutzer das korrekte Kennwort eingibt und (2) der Server die Gültigkeit des Kennworts geprüft hat. Darüber hinaus gewährleistet des oben beschriebene Schema, dass sowohl das Kennwort als auch der Chiffrierschlüssel auch sicher bleiben, wenn entweder der PC gestohlen oder der Server kompromittiert wird. Im Besonderen lassen die Daten, die gemeinsam mit den Protokollmeldungen auf dem Benutzer-PC gespeichert werden, keinen Offline-Angriff zum Erraten von Kennwörtern zu. Auf ähnliche Art und Weise lassen die Daten, die gemeinsam mit den Protokollmeldungen auf dem Server gespeichert werden, keinen Offline-Angriff zum Erraten von Kennwörtern zu. Um Daten zu dem Schlüssel zu erhalten, ist es notwendig, die durch den Benutzer-PC gespeicherten Daten zu kennen, das Kennwort zu kennen und entweder (1) die durch den Server gespeicherten Daten zu kennen oder (2) die Kooperation des Servers sicherzustellen. Aufwand und Komplexität einer Verwendung von mehreren Servern oder vertrauenswürdiger Hardware wie beim Stand der Technik werden vermieden, und das System kann mit wenig aufwändigen Rechenoperationen wie z. B. Hash-Funktionen realisiert werden. Darüber hinaus kann das Begrenzen auf dem Server 2 auf Grundlage einer inkorrekten Kennworteingabe erfolgen und so einen hochgradig wirksamen Schutz gegen Online-Angriffe bereitstellen. Das Schema bietet somit ein sicheres und praxistaugliches System, um über eine Interaktion mit nur einem Server einen geheimen Schlüssel eines Benutzercomputers zu generieren.
-
Obwohl bis hierher beispielhafte Ausführungsformen beschrieben wurden, sind viele Alternativen und Abwandlungen denkbar. So können andere Ausführungsformen unterschiedliche Codieralgorithmen verwenden, um Werte zu generieren, die in dem Protokoll verwendet werden. Andere geeignete Beispiele beinhalten Funktionen für das Erhalten eines Schlüssels auf Kennwortgrundlage wie z. B. den (im RFC 2898 der Internet Engineering Task Force veröffentlichten) PBKDF2-Algorithmus oder den (in „A Future-Adaptable Password Scheme”, Niels Provos und David Maziéres, USENIX 1999 beschriebenen) bcrypt-Algorithmus. Im Allgemeinen können Werte, die gemäß diesen Ausführungen zum Codieren bestimmter Elemente dienen, zusätzlich weitere Elemente codieren, und Datenübertragungen können andere Elemente als die hier konkret genannten übertragen.
-
Der in anderen Ausführungsformen generierte Schlüssel K kann für eine Verschlüsselung/Entschlüsselung beliebiger gespeicherter Daten oder für andere kryptographische Operationen als eine Verschlüsselung/Entschlüsselung verwendet werden. Geheime Benutzercomputerschlüssel können zum Beispiel dazu dienen, die Berechtigung des Benutzercomputers gegenüber einem Dritten zu prüfen oder Nachrichten zu unterzeichnen.
-
Obwohl hier aus Gründen der Veranschaulichung ein einfaches Datenverarbeitungssystem 1 beschrieben wird, sind auch andere Formen eines Datenverarbeitungssystems denkbar.
-
Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit darauf enthaltenen computerlesbaren Programmbefehlen beinhalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung durchzuführen.
-
Das computerlesbare Speichermedium kann eine gegenständliche Einheit sein, die Befehle zur Verwendung durch eine Befehlsausführungseinheit beibehalten und speichern kann. Das computerlesbare Speichermedium kann z. B. eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination der vorgenannten Einheiten sein, ohne jedoch darauf beschränkt zu sein. Eine nicht vollständige Liste konkreterer Beispiele des computerlesbaren Speichermediums beinhaltet Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren CD-ROM, eine DVD, einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie z. B. Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Befehlen sowie eine beliebige geeignete Kombination der vorgenannten Elemente. Bei einem computerlesbaren Speichermedium, wie es hier verwendet wird, ist nicht davon auszugehen, dass es sich per se um flüchtige Signale wie z. B. Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder ein anderes Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen), oder elektrische Signalen, die über eine Leitung übertragen werden, handelt.
-
Hier beschriebene computerlesbare Programmbefehle können über ein Netzwerk wie beispielsweise das Internet, ein lokales Netz (Local Area Network, LAN), ein Weitverkehrsnetz (Wide Area Network, WAN) und/oder ein drahtloses Netzwerk von einem computerlesbaren Speichermedium auf entsprechende Datenverarbeitungs-Nerarbeitungs-Einheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-Nerarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zur Speicherung auf einem computerlesbaren Speichermedium innerhalb der betreffenden Datenverarbeitungs-Nerarbeitungs-Einheit weiter.
-
Bei computerlesbaren Programmbefehlen zum Durchführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, ISA-Befehle (Instruction-Set-Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, einen Zustand festlegende Daten oder aber entweder um Quellcode oder um Objektcode handeln, der in einer beliebigen Kombination von einer oder mehreren Programmiersprachen wie z. B. einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie z. B. der Programmiersprache „C” oder ähnlichen Programmiersprachen geschrieben ist. Die computerlesbaren Programmbefehle können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, unter anderem ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei manchen Ausführungsformen kann ein elektronischer Schaltkreis wie z. B. ein programmierbarer Logikschaltkreis, Field-Programmable-Gate-Arrays (FPGAs) oder Programmable-Logic-Arrays (PLAs) die computerlesbaren Programmbefehle ausführen, indem er Zustandsdaten der computerlesbaren Programmbefehle verwendet, um die elektronische Schaltung zu personalisieren und Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch computerlesbare Programmbefehle realisiert werden kann/können.
-
Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben werden. Diese computerlesbaren Programmbefehle können auch auf einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darauf gespeicherten Befehlen einen Herstellungsartikel aufweist, der Befehle enthält, welche Aspekte der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktion/Handlung realisieren.
-
Die computerlesbaren Programmbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um zu veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder der anderen Einheit ausgeführt wird, so dass die Befehle, die auf dem Computer, der anderweitigen Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen realisieren.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Teil von Befehlen darstellen, das/der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die eine oder mehreren angegebenen logischen Funktionen realisieren lassen. Bei manchen alternativen Ausführungsformen können die in dem Block erwähnten Funknonen in einer anderen Reihenfolge als der in den Figuren genannten auftreten. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Zu erwähnen ist ebenfalls, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplan-Darstellungen durch Spezialsysteme auf Hardwaregrundlage, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert bzw. durchgeführt werden kann/können.