-
Hintergrund der Erfindung
-
1. Gebiet der Erfindung
-
Die Erfindung betrifft allgemein ein sicheres Protokoll für die Autorisierung eines Benutzerzugangs zu einem Netzwerk mit beschränktem Zugang oder einem lokalen Netzwerk.
-
2. Beschreibung der verwandten Technik
-
Verfahren der bisherigen Technik autorisieren den Zugang eines Benutzers zu einem Netzwerk mit beschränktem Zugang oder einem lokalen Netzwerk unter Verwendung einer Kombination aus zwei Zeichenketten. Die erste derartige Zeichenkette dient im Allgemeinen dazu, den Benutzer zu identifizieren, und auf sie kann als eine „Benutzer-ID”, ein „Benutzername” oder ein ähnlicher Begriff Bezug genommen werden. Auf die zweite Zeichenkette wird im Allgemeinen als ein „Passwort”, ein „Kenncode”, eine „persönliche Identifikationsnummer” oder PIN oder irgendein derartiger Begriff Bezug genommen.
-
Ein Kontenserver, der zu dem Netzwerk mit beschränktem Zugang gehört, hält eine Nachschlagtabelle registrierter Kombinationen der ersten Zeichenketten und zweiten Zeichenketten. Einem Benutzer, der eine registrierte Kombination einer ersten Zeichenkette (auf die hier nachstehend als Benutzer-ID Bezug genommen wird) und einer zweiten Zeichenkette (auf die hier nachstehend als „Passwort” Bezug genommen wird) vorlegt, wird Zugang zu dem Netzwerk mit beschränktem Zugang gegeben. Die Benutzer-ID bleibt im Allgemeinen während der Lebensdauer eines Kontos unverändert. Von dem Passwort wird angenommen, dass es häufig geändert wird, aber diese Vorgehensweise wird als mühsam und häufig vernachlässigt erfahren.
-
Die vorhandenen Systeme sind attraktiv für nicht autorisierte Eindringversuche, wie etwa Hacking. Zum Beispiel kann ein Benutzer identische Benutzer-ID- und Passwort-Kombinationen für eine Anzahl von Netzwerken mit beschränktem Zugang verwenden. Wenn nur eines kompromittiert wird, kann eine gesamte Anzahl von Konten mit beschränktem Zugriff dieses Benutzers für den nicht autorisierten Zugang offen sein. Viele Benutzer wählen Benutzer-IDs und Passwörter, die leicht zu erraten sind. Selbst wenn Benutzer mehr oder weniger zufällige Zeichenketten wählen, um das Erraten schwierig zu machen, sind sie versucht, kurze Zeichenketten zu verwenden, die zunehmend anfällig dafür sind, durch brachiale Computerberechnung (engl. brute force computing) geknackt zu werden. Und, wie bereits erwähnt, folgen die meisten Benutzer nicht dem Rat, ihre Passwörter häufig zu ändern.
-
Hacker können auch Zugang zu dem Computer eines Benutzers gewinnen, auf dem eine Datei mit Benutzer-IDs und Passwörtern im Speicher, zum Beispiel auf einer Festplatte, gespeichert sein kann. Hacker können auch durch ein Verfahren, das als „Phishing” bezeichnet wird, in dem ein Hacker sich als eine seriöse Website ausgibt, wodurch Benutzer verleitet werden, ihr Benutzer-ID- und Passwort-Kombinationen einzugeben, Zugang zu einer Benutzer-ID- und Passwort-Kombination gewinnen.
-
Eine andere Verwundbarkeitsquelle ist die Übermittlung von Benutzer-IDs und Passwörtern über unsichere Verbindungen. In den meisten Fällen kommuniziert ein Benutzer über das Internet mit einem Netzwerk mit beschränktem Zugang, und die Benutzer-ID und das Passwort werden zum Beispiel über unsichere Kommunikationskanäle an einen Webserver übermittelt, wo sie anfällig für Abhören sind.
-
Noch ein anderer Verwundbarkeitsbereich ist die Nachschlagtabelle, die in dem Kontenserver gespeichert ist. Es gab häufige Berichte über nicht autorisierten Zugang zu und Diebstahl von Anmeldekonten von tausenden, manchmal millionen Benutzern eines bestimmten Dienstes. Angesichts der gängigen Praxis der Wiederverwendung von Benutzer-IDs und Passwörtern für eine Anzahl verschiedener Konten haben diese Einbrüche eine ernsthafte Vervielfacherwirkung. Außerdem gab es zweifelsohne Einbrüche, die nicht gemeldet wurden, was das Problem sogar noch größer macht als es die allgemeine Öffentlichkeit realisieren mag.
-
Satyanarayanan, M: "Integrating security in a large distributed system." ACM Transactions on Computer Systems, Bd. 7. Nr. 3, Seiten 247–280 stellt eine Beschreibung eines verteilten Netzwerks bereit, das in den 1990ern an der Carnegie Mellon University (CMU) implementiert wurde. Der Zugang zu dem Netzwerk war auf Studenten und Lehrkörper der CMU beschränkt. Systembenutzer leiteten ein Anmeldungsprotokoll ein, indem sie eine Benutzer-ID und ein Passwort an einem mit dem Netzwerk verbundenen Arbeitsplatz eingaben. Ein Kontenserver verwendete eine Nachschlagtabelle, um die Benutzer-ID mit einem Verschlüsselungsschlüssel zu verbinden, sofern der Benutzer das korrekte Passwort eingegeben hatte. Der Abschluss des Anmeldeprotokolls wies eine Aufforderung/Antwort basierend auf dem Verschlüsselungsschlüssel auf. Der Kontenserver enthielt eine Nachschlagtabelle aus Benutzer-IDs und leicht verschlüsselten Passwörtern. Das Papier offenbart nicht, wie Benutzer des Systems mit ihren Benutzer-IDs und Passwörtern erstregistriert wurden oder wie der Verschlüsselungsschlüssel erzeugt und mit dem Benutzer verbunden wurde.
-
Das Secure Remote Password Protocol (SRP), von dem eine Beschreibung unter http://srp.stanford.edu/design.html zu finden ist, versucht, die Übertragung eines Passworts zwischen einer Benutzervorrichtung und einem Server zu vermeiden. Der Benutzer verwendet immer noch ein Passwort, aber das Passwort wird verschlüsselt, bevor es an einen Server gesendet wird.
-
Das Simple Certificate Enrollment Protocol (SCEP), von dem eine Beschreibung unter
http://www.cisco.com/c/en/us/support/docs/security-vpn/public-key-infrastructure-pki/116167-technote-scep-00.html zu finden ist, wurde konzipiert, um in einer relativ gut kontrollierten Umgebung die Registrierung von Vorrichtungen zu handhaben. Der SCEP-Server erzeugt ein Challenge-Passwort, das an den Anfordernden zugestellt wird und in der Eingabe zurück an den Server enthalten sein muss. Obwohl das SCEP-Protokoll mit nicht vertrauten Vorrichtungen verwendet wird, ist eine derartige Verwendung, wie von Shorter und Harris erklärt, unklug;
"The Use of the Simple Certificate Enrollment Protocol (SCEP) and Untrusted Devices", siehe http://www.css-security.com/wp-content/themes/css/scep/SCEP_and_Untrusted_Devices.pdf US 2011/0082801 offenbart ein Anmeldeprotokoll, das die Verwendung eines Verschlüsselungsschlüssels aufweist, der von einem Anfordernden in einem sicheren Speicher gespeichert wird. Auf den Verschlüsselungsschlüssel wird unter Verwendung von biometrischen Daten (wie etwa einer Fingerabdruckschablone), die eindeutig mit dem Anfordernden verbunden sind, zugegegriffen. Das Protokoll erfordert einen biometrischen Sensor.
-
Zusammengefasst sind vorhandene Systeme aus einem oder einer Kombination der folgenden Gründe anfällig für einen Angriff:
- – Benutzer-IDs und Passwörter sind leicht zu erraten;
- – Benutzer-IDs und Passwörter sind zu kurz und offen für brachiale Angriffe;
- – Benutzer-IDs und Passwörter werden für verschiedene Anmeldekonten wiederverwendet;
- – Passwörter werden, wenn überhaupt, mit unzureichender Häufigkeit geändert;
- – Benutzer-IDs und Passwörter werden über unsichere Kommunikationsleitungen übertragen;
- – Benutzer-IDs und Passwörter werden an unsicheren Orten gespeichert;
- – Wenn Benutzer-IDs und Passwörter einmal gestohlen wurden, können sie von einem Hacker ohne die Gefahr einer Erkennung der nicht autorisierten Verwendung verwendet werden;
- – Versuche, die Sicherheit vorhandener Systeme zu verbessern, scheitern aufgrund des Bedürfnisses vieler Benutzer, Benutzer-IDs und Passwörter zu haben, die leicht zu merken sind. Lösungen, die in der bisherigen Technik vorgeschlagen wurden, umfassen Protokolle, die immer noch die Verwendung von Passwörtern erfordern, aber die Notwendigkeit, derartige Passwörter zwischen einem Anfordernden und einem Server zu übertragen, vermeiden oder das Passwort verschlüsseln, bevor sie es übertragen. Diese Vorschläge lösen möglicherweise einige der vorstehenden Probleme, aber vermeiden nicht die Notwendigkeit, sich zahlreiche Passwörter mit unerwünschter Komplexität zu merken und zu verwalten.
-
Andere vorgeschlagene Lösungen können in gut kontrollierten Umgebungen gut funktionieren, sind aber für die Implementierung für die allgemeine Öffentlichkeit im Internet ungeeignet.
-
Protokolle, die auf biometrischer Identifizierung beruhen, erfordern, dass der Anfordernde jedes Mal, wenn er Zugang zu einem Webdienst haben möchte, Zugang zu einer biometrischen Vorrichtung hat.
-
Somit besteht ein Bedarf an einem sicheren Anmeldeprotokoll, das einige oder alle der vorstehenden Probleme vermeidet oder mildert. Es besteht ein besonderer Bedarf an einem derartigen Protokoll, das in einer nicht kontrollierten Umgebung, wie etwa dem Internet, mit Mitgliedern der allgemeinen Öffentlichkeit implementiert werden kann. Es besteht ein weiterer Bedarf an einem derartigen Protokoll, das keine spezifische Hardware für die Identifikation erfordert.
-
Kurze Zusammenfassung der Erfindung
-
Die vorliegende Erfindung behandelt diese Probleme, indem sie ein Verfahren zur Autorisierung des Zugangs eines Benutzers zu einem Netzwerk mit beschränktem Zugang bereitstellt, wobei dieses Verfahren aufweist:
- a. Empfangen einer Verbindungsanforderung eines Benutzers an einem Server;
- b. nach dem Einrichten der angeforderten Verbindung Übermitteln eines servergesteuerten Werts an den Benutzer;
- c. Empfangen einer Anmeldeanforderung des Benutzers an dem Server, welche eine Benutzer-ID oder eine Ableitung davon und eine Benutzer-Challenge, die mit einem von dem Benutzer gehaltenen Schlüssel und dem servergesteuerten Wert verschlüsselt ist, aufweist;
- d. Festlegen eines Benutzerschlüssels, der zu der Benutzer-ID gehört;
- e. Erzeugen einer Serverzufallszahl und Verschlüsseln der Serverzufallszahl mit dem Benutzerschlüssel;
- f. Senden der verschlüsselten Serverzufallszahl an den Benutzer;
- g. Empfangen eines Werts von dem Benutzer, der die Fähigkeit des Benutzers, die verschlüsselte Serverzufallszahl zu entschlüsseln, bestätigt.
-
Kurze Beschreibung der Zeichnungsfigur
-
1 ist eine schematische Darstellung einer Ausführungsform der Erfindung.
-
Detaillierte Beschreibung der Erfindung
-
Das Folgende ist eine detaillierte Beschreibung der Erfindung.
-
Definitionen
-
Der Begriff „Netzwerk mit beschränktem Zugang”, wie er hier verwendet wird, bedeutet jede Form gespeicherter Daten, die über das Internet oder irgendeine andere Art von Computerverbindung zugänglich ist. Der Begriff umfasst Websites, lokale Netzwerke, verteilte Netzwerke, Datensammlungen und ähnliches. Die vorliegende Erfindung betrifft unter anderem ein Verfahren zur Autorisierung eines Benutzerzugangs zu jeder Form von Daten, die über das Internet zugänglich ist. Die Form der Daten, auf die zugegriffen wird, ist in keiner Weise entscheidend für das Verfahren der Erfindung und wird generisch als „Netzwerk mit beschränktem Zugang” beschrieben.
-
In seinem umfassendsten Aspekt betrifft die vorliegende Erfindung ein Verfahren zur Autorisierung des Zugangs eines Benutzers zu einem Netzwerk mit beschränktem Zugang, wobei das Verfahren aufweist:
- a. Empfangen einer Verbindungsanforderung eines Benutzers an einem Server;
- b. nach dem Einrichten der angeforderten Verbindung Übermitteln eines servergesteuerten Werts an den Benutzer;
- c. Empfangen einer Anmeldeanforderung des Benutzers an dem Server, welche eine Benutzer-ID oder eine Ableitung davon und eine Benutzer-Challenge, die mit einem von dem Benutzer gehaltenen Schlüssel und dem servergesteuerten Wert verschlüsselt ist, aufweist;
- d. Festlegen eines Benutzerschlüssels, der zu der Benutzer-ID gehört;
- e. Erzeugen einer Serverzufallszahl und Verschlüsseln der Serverzufallszahl mit dem Benutzerschlüssel;
- f. Senden der verschlüsselten Serverzufallszahl an den Benutzer;
- g. Empfangen eines Werts von dem Benutzer, der die Fähigkeit des Benutzers, die verschlüsselte Serverzufallszahl zu entschlüsseln, bestätigt.
-
Der Begriff „Server” bezieht sich auf jede Art von Vorrichtung, die eine Schnittstelle zwischen dem Benutzer und dem Netzwerk mit beschränktem Zugang bereitstellt. In vielen Fällen ist der Server ein Webserver. Der Begriff „Webserver” wird hier nachstehend allgemein verwendet, so dass er jeden Server meint, der eine Schnittstelle zwischen einem Benutzer und einem Netzwerk bereitstellt, und hat eine sehr viel umfassendere Bedeutung als seine gewöhnliche Verwendung. Wie nachstehend detaillierter beschrieben, können spezifische Aufgaben, die an dem Verfahren der Erfindung beteiligt sind, an spezifische Server, wie etwa einen Kontenserver und/oder einen Anmeldeserver, delegiert werden. Der Kontenserver und/oder der Anmeldeserver können dedizierte Abschnitte eines Webservers sein oder können selbständige Server sein, die mit dem Webserver in Verbindung stehen.
-
Die Verbindungsanforderung kann eine Anforderung einer sicheren Verbindung, zum Beispiel einer SSL-Verbindung oder einer TLS-Verbindung, sein. Bedeutenderweise stellen die hier als Beispiel verwendeten Verschlüsselungsprotokolle Sicherheitsvorkehrungen bereit, die auch dann eine sichere Anmeldung zulassen, wenn keine sichere Verbindung verfügbar ist.
-
Die Verbindung kann auf jede in der Technik bekannte Weise, zum Beispiel unter Verwendung des TLS-Verbindungsprotokolls, eingerichtet werden. Wenn die Verbindung einmal eingerichtet ist, übermittelt der Server dem Benutzer einen servergesteuerten Wert. Dies ist ein dem Server bekannter Wert, den der Benutzer für die richtige Verschlüsselung von Werten benötigt, die der Benutzer an den Server übertragen wird. Der Benutzer kann den servergesteuerten Wert auch zum Entschlüsseln verschlüsselter Nachrichten, die von dem Server empfangen werden, benötigen.
-
Ein Beispiel für einen servergesteuerten Wert, der in diesem Kontext verwendet werden kann, ist eine ganze Zahl n, die den Benutzer über die Anzahl von Bits des passenden Schlüssels und/oder die Länge einer Benutzerzufallszahl, die in einer Challenge verwendet werden soll, etc. informiert. Ein anderes Beispiel für eine servergesteuerte Zahl ist ein Serverzertifikat, das der Benutzer in seine Verschlüsselungen aufnehmen kann. In spezifischen Ausführungsformen kann der Server dem Benutzer zwei oder mehr servergesteuerte Werte übermitteln.
-
In einem nächsten Schritt übermittelt der Benutzer dem Server eine Anmeldeanforderung, die eine Benutzer-ID (oder eine Ableitung davon) und eine Benutzer-Challenge übermittelt.
-
Die Benutzer-ID kann eine Zeichenkette, wie etwa ein Name oder eine alphanumerische Zeichenkette sein, die der Benutzer sich merkt. In dieser Ausführungsform beruht das Anmeldeprotokoll auf einer Kombination aus etwas, das der Benutzer kennt (die Benutzer-ID), und etwas, das der Benutzer besitzt (einen Schlüssel zum Entschlüsseln der verschlüsselten Serverzufallszahl). In einer alternativen Ausführungsform kann die Benutzer-ID ein biometrischer Datenwert, der zum Beispiel von der Netzhaut des Benutzers erhalten wird, oder ein Fingerabdruck sein. In dieser Ausführungsform beruht das Anmeldeprotokoll auf einer Kombination aus etwas, über das der Benutzer die ausschließliche Kontrolle hat (die Benutzer-ID), und etwas, das der Benutzer besitzt (einen Schlüssel zum Entschlüsseln der verschlüsselten Serverzufallszahl).
-
Von den beiden wird nur die Benutzer-ID übermittelt. Das Gewinnen von Zugriff auf eine Benutzer-ID zum Beispiel durch Abhören ihrer Übertragung stellt einem Hacker keinen Zugang zu dem Netzwerk mit beschränktem Zugang zur Verfügung, weil ein derartiger Zugang auch die Fähigkeit erfordert, die Serverzufallszahl zu entschlüsseln. Wie nachstehend detaillierter diskutiert, wird die Benutzer-ID in bevorzugten Ausführungsformen in einer rechnerisch konstruierten Form übermittelt, was ihr Abhören für Hacker sogar noch nutzloser macht. Die Benutzer-ID kann zum Beispiel mit einem Schlüssel verschlüsselt werden, der von dem Benutzer gehalten wird. Die Benutzer-ID kann zusammen mit einem Wert verschlüsselt werden, der den Server eindeutig identifiziert, zum Beispiel der URL des Servers oder einem signifikanten Teil davon. In einer alternativen Ausführungsform kann die Benutzer-ID zusammen mit einem servergesteuerten Wert, der dem Benutzer in Schritt b übermittelt wird, verschlüsselt werden. Zum Beispiel kann die Benutzer-ID mit einem Zertifikat verschlüsselt werden, das von dem Server empfangen wird.
-
Die Verschlüsselung der Benutzer-ID mit einem Wert, der für den Server eindeutig ist, ermöglicht dem Benutzer, eine Benutzer-ID für alle Server zu haben, mit denen sich der Benutzer von Zeit zu Zeit verbindet. Die verschlüsselte Version davon ist aufgrund der Aufnahme des Werts, der für den Server eindeutig ist, für jeden Server einzigartig.
-
Neben der (Ableitung der) Benutzer-ID überträgt der Benutzer auch eine Benutzer-Challenge. Die Benutzer-Challenge kann ein Einmalschlüssel (engl. nonce) sein, der mit einem Schlüssel, der von dem Benutzer gehalten wird, verschlüsselt wird.
-
Der Benutzer kann einen Satz von Schlüsseln, einen für jeden Server, bei dem der Benutzer registriert ist, halten. Der Benutzer kann den passenden Schlüssel durch Auswählen oder Eingeben einer Zahl oder durch Klicken auf ein Piktogramm, das den gewünschten Schlüssel darstellt, auswählen. Zum Beispiel kann ein Piktogramm, das ein Bild eines Buchs zeigt, für den Schlüssel, der für die Anmeldung an dem Benutzerkonto bei einem Online-Buchladen benötigt wird, verwendet werden, ein Rosenpiktogramm für die Anmeldung bei einem Blumenlieferdienst, etc.
-
In einer Ausführungsform kann der Schlüssel basierend auf einem Wert, der für den Server eindeutig ist, wie etwa seiner URL oder einem Teil davon, einem servergesteuerten Wert, der dem Benutzer in Schritt b übermittelt wird, zum Beispiel einem Serverzertifikat, etc. automatisch ausgewählt werden. In dieser Ausführungsform braucht der Benutzer sich den Schlüssel, der in dem Anmeldeprotokoll verwendet werden soll, nicht zu merken oder ihn identifizieren.
-
Der Benutzer erzeugt einen Einmalschlüssel und verschlüsselt ihn mit dem passenden Schlüssel, wobei er einen servergesteuerten Wert berücksichtigt. Die Rolle des servergesteuerten Werts kann es sein, die Länge des Schlüssels und/oder die Länge des Einmalschlüssels zu bestimmen. Der servergesteuerte Wert kann auch zusammen mit dem Einmalschlüssel verschlüsselt werden.
-
Nach dem Empfang der Anmeldeanforderung bestimmt der Server einen Benutzerschlüssel, der zu der Benutzer-ID (oder deren Ableitung) gehört. Wie nachstehend detaillierter erklärt, kann der Schritt des Bestimmens des Benutzerschlüssels das Bestimmen eines Site-Schlüssels und die Verwendung des Site-Schlüssels, um den Benutzerschlüssel zu berechnen, aufweisen. Die verschiedenen beteiligten Schritte können alle von dem (Web-)Server ausgeführt werden, oder spezifische Aufgaben können an andere Server, wie etwa einen Kontenserver und/oder einen Anmeldeserver, delegiert werden.
-
Die bestimmte Benutzernummer wird beim Entschlüsseln der Benutzer-Challenge verwendet. Der Server erzeugt auch eine Server-Challenge, indem er eine Serverzufallszahl mit dem Benutzerschlüssel verschlüsselt. Der Benutzer muss seine Identität belegen, indem er zeigt, dass er die Server-Challenge entschlüsseln kann.
-
Es ist unmöglich, Zugang zu einem Netzwerk mit beschränktem Zugang zu gewinnen, indem ein früherer erfolgreicher Anmeldeversuch wiedergegeben wird, weil das Verfahren die Entschlüsselung einer Serverzufallszahl bedingt, die nur einmal verwendet wird. Der von dem Benutzer in Schritt e an den Anmeldeserver zurück gesendete Wert wird in einem nachfolgenden Anmeldeversuch ein falscher Wert sein und daher für einen Hacker nutzlos sein.
-
Das vorstehend beschriebene Verfahren dient im Wesentlichen dazu, dem Webserver zu bestätigen, dass der Benutzer, der den Anmeldeversuch unternimmt, der ist, der er vorgibt zu sein, das heißt, jemand, der die Benutzer-ID kennt (oder sie kontrolliert) und die Kontrolle über den Schlüssel hat, der für das Entschlüsseln der Serverzufallszahl benötigt wird.
-
Die Sicherheit des Verfahrens wird verbessert, indem dem Benutzer die Bestätigung der Echtheit des Netzwerks mit beschränktem Zugang gegeben wird. Zu diesem Zweck weist die Anmeldeanforderung des Benutzers eine verschlüsselte Benutzerzufallszahl auf. Der Server stellt dem Benutzer die Authentifizierung bereit, indem er die verschlüsselte Benutzerzufallszahl erfolgreich entschlüsselt und dem Benutzer einen Wert sendet, der die Fähigkeit des Servers, die verschlüsselte Benutzerzufallszahl zu entschlüsseln, bestätigt. Dieses Merkmal stellt einen Schutz gegen Phishing-Versuche bereit, da unrechtmäßige „gleich aussehende” Websites nicht in der Lage sein werden, den Benutzer mit der erforderlichen Authentifizierung zu versehen.
-
Für den Schritt d ist es möglich, eine in dem Webserver oder in einem Kontenserver, der zu dem Webserver gehört, angesiedelte Nachschlagtabelle zu haben. Der Schritt des Bestimmens des Benutzerschlüssels, der zu der Benutzer-ID gehört, oder eines Werts, der die Benutzer-ID darstellt, kann eine Sache des Nachschalgens des Benutzerschlüssels in der Nachschlagtabelle sein. Eine derartige Nachschlagtabelle kann jedoch anfällig für Hacking-Versuche sein. In einer bevorzugten Ausführungsform weist der Schritt des Bestimmens des Benutzerschlüssels, der zu der Benutzer-ID gehört, das Erzeugen des Benutzerschlüssels nach Empfang einer Anmeldeanforderung auf. Der Benutzerschlüssel kann durch Verschlüsseln eines gespeicherten Site-Schlüssels unter Verwendung eines geheimen Schlüssels erzeugt werden. Der gespeicherte Site-Schlüssel ist mit dem Benutzer verbunden. Der Benutzerschlüssel kann unmittelbar nach der Verwendung verworfen werden, so wird er niemals gespeichert. Er wird neu erzeugt, wenn eine neue Anmeldeanforderung gestellt wird.
-
Das Verfahren zum Verschlüsseln des Site-Schlüssels mit dem geheimen Schlüssel muss vor Angriffen von außen geschützt werden, und es wird vorzugsweise in einem Hardware Security Module (HSM) ausgeführt. In bevorzugten Ausführungsformen weist das Verfahren der Erfindung zusätzliche serverseitige Verschlüsselungs- und Entschlüsselungsoperationen auf. Vorzugsweise finden alle derartigen Operationen in dem HSM statt. Das HSM kann innerhalb des Webservers oder in einem getrennten Anmeldeserver angesiedelt sein. In dem letzteren Fall ist der Kommunikationskanal zwischen dem Webserver und dem Anmeldeserver vorzugsweise eine sichere Kommunikationsleitung.
-
Es wird überlegt, dass die Rolle des Anmeldeservers für eine Anzahl von Netzwerken mit beschränktem Zugang zentralisiert werden kann. Die Anmeldeserverrolle kann als ein Dienst an Betreiber von Websites bereitgestellt werden, wodurch Betreiber von Websites von den Aufgaben und Verantwortlichkeiten bezüglich des Anbietens einer sicheren Anmeldung für ihre Benutzer entlastet werden. Der Anmeldeserver kann Verantwortung für zusätzliche Aufgaben übernehmen. Zum Beispiel kann der Anmeldeserver Zertifikate für die Webserver halten, die er unterstützt. Diese Zertifikate können, wie nachstehend detaillierter erklärt wird, eine Rolle in dem sicheren Anmeldeprotokoll der vorliegenden Erfindung spielen.
-
Das vorstehend beschriebene Verfahren setzt voraus, dass der Benutzer ein Konto bei dem Netzwerk mit beschränktem Zugang hat. Das Konto kann in einem Kontoerzeugungsverfahren eingerichtet werden. Der Hauptzweck des Kontoerzeugungsverfahrens ist, dass der Server ein Konto für den Benutzer eröffnet und einen Site-Schlüssel, der zu dem Benutzer gehört, erzeugt.
-
In einer Ausführungsform erzeugt der Anmeldeserver während des Kontoerzeugungsverfahrens auch einen Benutzerschlüssel. In einer Ausführungsform wird der Benutzerschlüssel durch Verschlüsseln des Site-Schlüssels mit einem aktuellen geheimen Schlüssel berechnet. Der Benutzerschlüssel kann selbst verschlüsselt werden, wobei zum Beispiel ein von dem Benutzer empfangener Dummy-Schlüssel verwendet wird.
-
Immer noch während des Kontoerzeugungsverfahrens können der Site-Schlüssel und der verschlüsselte Benutzerschlüssel mit einem allgemeinen Schlüssel, zum Beispiel mit einem Website-Schlüssel der zwischen dem Anmeldeserver und einem Webserver vorab vereinbart wird, oder mit einem öffentlichen/privaten Schlüsselpaar, verschlüsselt werden. Der Anmeldeserver kann verwendet werden, um Berechnungen für die Authentifizierungsprotokolle mehrerer Netzwerke mit beschränktem Zugang auszuführen. Vorzugsweise verwendet der Anmeldeserver einen eindeutigen Website-Schlüssel für jeden der Webserver, mit denen er arbeitet.
-
Die verschlüsselten Werte, die mit dem Website-Schlüssel berechnet werden, werden mit einem Kontenserver vorab vereinbart. Der Kontenserver entschlüsselt die empfangenen Werte mit dem vorab vereinbarten Website-Schlüssel oder mit dem privaten Schlüssel eines öffentlichen/privaten Schlüsselpaars und speichert die entschlüsselten Werte. In einer Ausführungsform speichert der Kontenserver die entschlüsselten Werte neben der Benutzer-ID oder vorzugsweise einen Wert, der die Benutzer-ID darstellt, wie etwa einen Hash-Wert.
-
Sowohl in dem Kontenerzeugungsverfahren als auch in dem Anmeldeverfahren spielt der geheime Schlüssel eine wichtige Rolle. Der geheime Schlüssel kann statisch sein, aber vorzugsweise ist der geheime Schlüssel dynamisch, das heißt, der geheime Schlüssel kann von Zeit zu Zeit geändert werden.
-
In einer Ausführungsform wird der geheime Schlüssel aus mehreren geheimen Schlüsseln ausgewählt. Die mehreren geheimen Schlüssel können in einer Anordnung angeordnet werden, die vorzugsweise in chronologischer Erzeugungsreihenfolge indiziert ist. Der Benutzerschlüssel wird durch einen neuen aktuellen geheimen Schlüssel aktualisiert. Dies kann in einem Verfahren, das für den Benutzer unsichtbar ist, automatisch erledigt werden.
-
Dem Benutzer kann der Zugang zu dem Netzwerk mit beschränktem Zugang basierend auf der Verwendung eines alten Benutzerschlüssels durch den Benutzer erlaubt werden. Dem autorisierten Zugang basierend auf einem alten Benutzerschlüssel können Beschränkungen auferlegt werden. Zum Beispiel könnte ein derartiger Zugang auf eine spezifische Zeitspanne seit der letzten erfolgreichen Anmeldung beschränkt werden. Wenn es einem Benutzer nicht gelungen ist, eine Bedingung für den Netzwerkzugang zu erfüllen, zum Beispiel, indem er es unterlässt, eine erforderliche Abonnementgebühr zu bezahlen, kann dem Benutzer eine Anmeldung für die Behebung des Mangels erlaubt werden. Gewissen Benutzern kann der Zugang insgesamt verweigert werden, zum Beispiel indem die Anzahl geheimer Schlüssel, die für diesen Benutzer verfügbar sind, auf null beschränkt wird.
-
Das Protokoll kann auf Standardanlagen implementiert werden. Insbesondere ist alles, was an dem Benutzerende benötigt wird, eine Rechenvorrichtung mit einem Web-Browser. Der Benutzer kann zusätzlichen Schutz wünschen und entscheiden, seine Schlüssel hinter einer biometrischen Vorrichtung zu verstecken, dies ist aber für den Betrieb des Protokolls nicht notwendig. Ein Website-Betreiber, der seine Anmeldesicherheit aufrüsten möchte, kann dies tun, indem er, ungeachtet dessen, wie veraltet die Anlage des Benutzers ist, einen Schlüsselring und die begleitende Software in den Web-Browsern aller seiner Benutzer platziert. Dies macht es einem Website-Betreiber möglich, eine Aufrüstung einzuführen, wenn er dies wünscht, ohne auf spezifische Vorrichtungen, wie etwa biometrische Sensoren, die von allen seinen Benutzern verwendet werden müssen, zu warten.
-
Als allgemeine Regel werden keine tatsächlichen Werte, nur verschlüsselte Werte, in dem Protokoll der vorliegenden Erfindung übertragen. Der Fachmann ist mit etablierten Verschlüsselungsprotokollen vertraut, von jeden jedes in der Implementierung der vorliegenden Erfindung verwendet werden kann. Beispiele für geeignete kryptographische Algorithmen, die für die Verwendung in der vorliegenden Erfindung geeignet sind, umfassen AES (Advanced Encryption Standard) 256; SHA (Secure Hash Algorithm) 256 und RSA 2048. Aufgrund des höchst zufälligen Wesens einiger der Werte, die übertragen werden, können in manchen Fällen leichte Verschlüsselungsalgorithmen, wie etwa XORing, verwendet werden.
-
Beschreibung veranschaulichender Ausführungsformen/Beispiele
-
Das Folgende ist eine Beschreibung gewisser Ausführungsformen der Erfindung, die lediglich beispielhaft gegeben werden.
-
Die Erfindung wird unter Bezug auf eine Internet-Website mit kontrolliertem Zugang dargestellt. Es wird jedoch zu schätzen gewusst, dass die Erfindung ebenso auf andere Situationen, in denen ein Benutzer den Zugang zu einem Netzwerk mit kontrolliertem Zugang, wie etwa zu einem lokalen Netzwerk, das zu dem Arbeitgeber des Benutzers gehört, etc. anstrebt, anwendbar ist. Aus diesem Grund sollte Begriffen wie „Website” und „Webserver” eine weitreichende Interpretation verliehen werden.
-
1. Einrichten eines Kontos
-
In diesem Beispiel wird auf eine Person, die Zugang zu einem Netzwerk mit beschränktem Zugang, wie etwa einer Website, gewinnen möchte, als ein „Benutzer” Bezug genommen. Der Benutzer möchte sich mit einem Server verbinden, der die Website betreibt. Auf diesen Server wird als der „Webserver” Bezug genommen. Um Zugang zu der Website zu gewinnen, muss der Benutzer ein Konto bei der Website haben. Das Konto des Benutzers wird zusammen mit anderen Konten anderer Benutzer von einem Kontenserver verwaltet. Der Kontenserver kann ein dedizierter Teil des Webservers sein, oder er kann ein getrennter Server sein. In dem letzeren Fall können der Kontenserver und der Webserver in physischer Nähe zueinander, zum Beispiel in dem gleichen Raum, angeordnet sein oder sie können an physisch entfernten Orten sein. Es ist wünschenswert, dass Kommunikationen zwischen dem Webserver und dem Kontenserver über sichere Kommunikationskanäle stattfinden.
-
Für ein richtiges Verständnis der vorliegenden Erfindung ist es nicht immer notwendig, zwischen dem Webserver und dem Kontenserver zu unterscheiden. In der folgenden Diskussion kann von Zeit zu Zeit Bezug auf den Webserver genommen werden, wenn streng genommen der Begriff Kontenserver verwendet werden könnte. Nichtsdestotrotz wird er Fachmann kein Problem beim Verständnis des Betriebs der Erfindung haben.
-
Der Webserver ist mit einem Anmeldeserver verbunden. Der Anmeldeserver kann ein dedizierter Teil des Webservers sein oder kann ein getrennter Server sein. In dem letzteren Fall können der Anmeldeserver und der Webserver in physischer Nähe zueinander, zum Beispiel in dem gleichen Raum, angeordnet sein oder sie können an physisch entfernten Orten sein. Es ist wünschenswert, dass Kommunikationen zwischen dem Webserver und dem Anmeldeserver über sichere Kommunikationskanäle stattfinden. Es ist denkbar, den Anmeldeserver von einer getrennten Funktionseinheit betreiben zu lassen, die sichere Anmeldedienste für eine oder eine Anzahl von Websites bereitstellt.
-
Zum Einrichten eines Kontos bei dem Webserver muss der Benutzer in Besitz eines Schlüssels sein. In dieser Ausführungsform ist der Benutzer in Besitz einer Sammlung von Schlüsseln, zum Beispiel 99 Schlüsseln, die in einer mathematischen Matrix in einem Speicher gespeichert werden können, die für den Benutzer zugänglich ist. Die Matrix kann als ein mathematisches Äquivalent eines physikalischen Schlüsselrings gesehen werden und auf sie wird hier als der Schlüsselring Bezug genommen. Jeder der 99 Schlüssel an dem Schlüsselring wird durch eine ganze Zahl 1 bis 99 identifiziert, die ihrer Position in der Matrix entspricht. Der Schlüsselring kann ferner eine Schlüsselringkennung aufweisen, die ein Schlüssel mit der Referenznummer 0 (null) an dem Schlüsselring ist, auf die als Z[0] Bezug genommen wird. Jeder Schlüssel an dem Schlüsselring kann eine Zeichenkette aus zufälligen Bits, zum Beispiel 128 Bits, sein. Der Benutzer braucht sich diese Zeichenketten nicht zu merken oder sie nicht einmal zu kennen. Der Benutzer muss sich nur die Nummer des Schlüssels, der für eine bestimmte Website verwendet wird, merken oder aufschreiben.
-
Wie in den vorhandenen Anmeldeschemen braucht der Benutzer eine Benutzerkennung oder Benutzer-ID. Dies sollte eine Zeichenkette sein, die für den Benutzer leicht zu merken ist, oder etwas, das auf Daten basiert, über welche der Benutzer ausschließliche Kontrolle hat, wie etwa biometrische Daten. Der Benutzer sendet nicht seine Benutzer-ID, sondern eine verschlüsselte Form der Benutzer-ID, wie etwa einen Hash-Wert, an den Webserver. Der Hash-Wert kann unter Verwendung einer Kombination der Benutzer-ID und der Schlüsselringkennung Z[0] aufgebaut werden.
-
Zuerst werden Hashes für die Schlüsselringkennung und die Benutzer-ID berechnet. H0 = SHA256(Z[0]) H1 = SHA256(ID)
-
Oder um einen Wert Uh, der für den Server eindeutig ist, zu erzeugen, wird aus der Benutzer-ID mit dem Domänennamen des Servers ein Hash-Wert gebildet. H1 = SHA256(ID + Domänen.name)
-
Dann wird Uh in einer XOR-Operation für die zwei Hash-Werte berechnet: Uh = H0 ⊕ H1.
-
Der Hash-Wert Uh wird aus etwas aufgebaut, das der Benutzer kontrolliert (die Schlüsselringkennung) und etwas, das der Benutzer kennt. Der Benutzer kann eine einfache Benutzer-ID wählen, weil die Benutzer-ID selbst nicht an den Webserver übermittelt wird. Überdies liegt wenig Schaden in der Verwendung der identischen Benutzer-ID für eine Anzahl verschiedener Websites durch den Benutzer.
-
Wenn der Benutzer den Schlüsselring das erste Mal verwendet, indem er sich um ein Konto bei einer Website bewirbt, ist keiner der Schlüssel an dem Schlüsselring in aktiver Verwendung. Anders gesagt sind an diesem Punkt alle Schlüssel an dem Schlüsselring Dummy-Schlüssel. Wenn der Benutzer sich um ein neues Konto bewirbt, teilt die Website dem Benutzer die Anzahl von Bits n mit, die für Schlüssel verwendet wird. Die Website macht auch den öffentlichen Schlüsselteil Kle einer öffentlichen/privaten Schlüsselkombination für den Benutzer verfügbar. Der private Schlüssel KLE wird von dem Anmeldeserver behalten.
-
Der Benutzer wählt den Dummy-Schlüssel mit der Indexnummer (d) von dem Schlüsselring aus. Kd = Z[d]mod2n
-
In einer alternativen und bevorzugten Ausführungsform wird die Indexnummer d nicht von dem Benutzer ausgewählt, sondern wird basierend auf einem Wert berechnet, der für den Webserver eindeutig ist. Zum Beispiel kann d ein Hash-Wert des Domänennamens des Webservers sein: d = SHA256(Domänen.name) oder vorzugsweise: d = SHA256(Z[0] + Domänen.name)
-
In noch einer anderen Ausführungsform kann die Indexnummer d ein Hash eines Zertifikats, das von dem Webserver empfangen wird, sein. In dieser Ausführungsform richtet der Benutzer zum Beispiel unter Verwendung des TLS-Protokolls eine sichere Verbindung mit dem Webserver ein. Der Webserver übermittelt ein Serverzertifikat Cs an den Benutzer, das zum Beispiel eine Basis für die Berechnung der Indexnummer d bildet: d = SHA256(Cs) oder vorzugsweise: d = SHA256(Cs + Z[0])
-
Der Vorteil des Bindens einer Indexnummer d an einen eindeutigen Wert des Servers ist, dass das Nachschlagen des Schlüssels automatisiert werden kann, so dass der Benutzer sich nicht merken braucht, welchen Schlüssel er für die spezifische Website verwenden soll.
-
Ungeachtet dessen, wie der Wert von d ausgewählt wird, verschlüsselt der Computer des Benutzers dann den ausgewählten Dummy-Schlüssel mit dem öffentlichen Schlüssel. Kh = ERSA(Kd, Kle)
-
Der Benutzer sendet dann Uh und Kh zusammen mit allen anderen Informationen, die als relevant für die Eröffnung eines Kontos betrachtet werden, an den Webserver. Der Webserver erzeugt ein neues Konto, das durch Uh identifiziert wird, und sendet Kh und n an den Anmeldeserver.
-
Alle mathematischen Operationen des Anmeldeservers werden in einem High Security Module (HSM) ausgeführt. Der Anmeldeserver erzeugt einen neuen Site-Schlüssel, Ks, den er unter Verwendung eines privaten Schlüssels KLM: verschlüsselt: Ks = Random(n) Ky = ERSA(Ks, Kae) wobei Kae ein öffentlicher Schlüssel ist, von dem der Kontoserver den privaten Schlüssel KAE hält.
-
Ks wird unter Verwendung eines geheimen Schlüssels S[0] verschlüsselt: Ku = AES256(Ky, S[0])mod2n und der (2048-Bit)-Wert Kh wird mit dem privaten Schlüssel KLE verschlüsselt, um Kd zu ergeben: Kd = DRSA(Kh, KLE) der dann verwendet wird, um Ku zu verschlüsseln: Kx = Ku ⊕ Kd
-
Die Werte Ky und Kx werden an den Webserver gesendet. Der Webserver leitet Ky und Uh an den Kontenserver weiter, der seinen privaten Schlüssel verwendet, um Ky zu verschlüsseln, um den Site-Schlüssel Ks zu erhalten. Der Site-Schlüssel wird sofort wieder verschlüsselt. Ks = DRSA(Ky, KAE) Ka = ERSA(Ks, Kle)
-
Der verschlüsselte Wert Ka wird in neben Uh in dem Kontenserver gespeichert. Bei zukünftigen Anmeldeversuchen wird der Wert Ka ohne weitere Verarbeitung an den Anmeldeserver gesendet.
-
Der verschlüsselte Kx wird an den Benutzer gesendet, der ihn unter Verwendung des Dummy-Schlüssels, der bei der Erzeugung des Kontos verwendet wurde, entschlüsseln kann: Ku = Kx ⊕ Kd
-
Schließlich wird der Benutzerschlüssel an dem Schlüsselring an der Stelle d mit etwas in der Art angeordnet: Z[d] = (Random(128 – n) << n) ⊕ Ku
-
Das Protokoll der Erzeugung des Kontos ist in Tabelle 1 zusammengefasst. Tabelle 1: Beantragen eines neuen Kontos
-
Der Uh-Wert kann auf eine Anzahl von Weisen verstärkt werden. Der Wert ist Uh wie bisher berechnet: H0 = SHA256(Z[0])
-
Wenn ein biometrischer Wert verwendet wird, kann er die Benutzeridentifikationszeichenkette ersetzen, wenn H1 berechnet wird: H1 = SHA256(bio.Wert + Domänen.name) Uh = H0 ⊕ H1.
-
Anstatt die Benutzer-ID durch den bio.Wert zu ersetzten, kann die Erstere auch als ein getrennter Wert hinzugefügt werden. H1 = SHA256(ID + Domänen.name) H2 = SHA256(bio.Wert) Uh = H0 ⊕ H1 ⊕ H2
-
Der gleiche Ansatz kann verwendet werden, um einen Wert von einem Hardware-Token aufzunehmen: H1 = SHA256(ID + Domänen.name) H2 = SHA256(Token.Wert) Uh = H0 ⊕ H1 ⊕ H2
-
Es kann wünschenswert sein, ein Konto an zwei Benutzer zu binden: H1 = SHA256(ID + Domänen.name) H2 = SHA256(bio.Wert1 + bio.Wert2) Uh = H0 ⊕ H1 ⊕ H2
-
Die Verschlüsselung kann verstärkt werden, indem ferner ein Hardware-Token hinzugefügt wird. H1 = SHA256(ID + Domänen.name) H2 = SHA256(Token.Wert) H3 = SHA256(bio.Wert1 + bio.Wert2) Uh = H0 ⊕ H1 ⊕ H2 ⊕ H3
-
Ein Benutzer kann von verschiedenen Vorrichtungen, wie etwa einem Tablet, einem Smartphone oder einem PC, auf eine Website zugreifen. Jede Vorrichtung kann verschiedene Einrichtungen zum Erzeugen eines biometrischen Werts bieten oder kann keine derartige Einrichtung bieten. Im Allgemeinen wird der Wert von Uh von der Vorrichtung, die verwendet wird, abhängen, was es wünschenswert macht, zuzulassen, dass mehrere Uh-Werte mit einem Konto verknüpft werden.
-
Als ein Ergebnis des Protokolls für die Erzeugung eines Kontos ist der Benutzer nun in Besitz eines eindeutigen Benutzerschlüssels Ku, der auf einem geheimen Schlüssel basiert, der niemals nach außerhalb des HSM des Anmeldeservers übermittelt wird. Der Benutzerschlüssel Ku kann so lang sein wie es der Betreiber der Website wünscht, (in dieser Ausführungsform) bis zu einem Maximum von 128 Bits. Der Benutzer muss sich nur seine Indexnummer k in dem Schlüsselring merken. Anstatt eine Nummer zu verwenden, kann der Benutzerschlüssel durch irgendein anderes Mittel gemerkt werden. Zum Beispiel können alle Schlüssel an dem Schlüsselring mit Piktogrammen oder Fotos verbunden sein. Der Benutzer muss sich dann nur das Foto oder Piktogramm merken, das mit dem Schlüssel für eine bestimmte Website verbunden ist.
-
Überdies kann Ku, wie nachstehend detaillierter erklärt wird, ohne irgendwelche Unbequemlichkeit für den Benutzer auf einer häufigen Basis modifiziert werden.
-
Wenn der Benutzer Konten bei anderen Websites erzeugt, wird eine zunehmende Anzahl von Schlüsseln auf dem Schlüsselring aktiv werden, und eine abnehmende Anzahl wird Dummy-Schlüssel sein. Wenn ein Hacker den Schlüsselring gewinnen sollte, wird es unmöglich sein, zu bestimmen, welche der Schlüssel aktiv sind und welche Dummys sind, oder für welche Website ein Schlüssel verwendbar sein kann. Der nicht autorisierte Zugang zu der Website ist so gut wie ausgeschlossen, da der Hacker nicht in der Lage wäre, den Schlüsselring zu verwenden, ohne die Benutzer-ID zu kennen. Die Sicherheit kann weiter erhöht werden, indem der Schlüsselring in einem sicheren Bereich gespeichert wird.
-
Der Algorithmus 1 zeigt die Schritte zur Erzeugung eines Kontos auf der Seite des Benutzers: Algorithmus 1: Berechnen de Hash der Benutzer-ID
-
Der Algorithmus 2 zeigt die Schritte zur Erzeugung eines Kontos auf der Seite des Anmeldservers: Algorithmus 2: Erzeugen von Werten für ein neues Konto
-
2. Anmelden in einer Umgebung mit statischem geheimem Schlüssel
-
Das einfachste Anmeldeprotokoll gilt für Ausführungsformen, in denen der geheime Schlüssel statisch ist, das heißt, nicht geändert wird. Das Anmeldeprotokoll ist wie folgt.
-
Wenn der Benutzer sich mit dem Webserver verbindet, übermittelt der Letztere den Wert von n, das heißt, die Anzahl von Bits in einem Schlüssel, an den Benutzer. In gewissen Ausführungsformen übermittelt der Webserver auch sein Zertifikat Cs, das verwendet wird, um den Wert des Index k für den passenden Schlüssel an dem Schlüsselring des Benutzers zu bestimmen. Der Computer des Benutzers erzeugt eine pseudozufällige Zahl Ru und verschlüsselt diese Zahl mit dem Benutzerschlüssel Ku, der während des Verfahrens zum Einrichten des Kontos bei dem Index k an den Schlüsselring des Benutzers angebracht wurde: Ru = Random(n) Ku = Z[k]mod2n Au = Ru ⊕ Ku
-
Der Computer des Benutzers berechnet auch den Wert Uh neu. Die Werte Au und Uh werden an den Webserver übermittelt. Außerdem berechnet der Computer des Benutzers einen Hash-Wert Bu der pseudozufälligen Zahl Ru: Bu = SHA256(Ru)mod2n
-
Der Wert Bu wird vorübergehend in dem Computer des Benutzers gespeichert.
-
Der Webserver schlägt den verschlüsselten Site-Schlüssel Ka basierend auf dem empfangenen Wert Uh nach und sendet die Werte Au, Ka und n an den Anmeldeserver. Falls n statisch ist, kann der Anmeldeserver den Wert n im Speicher gespeichert haben, so dass dieser Wert nicht übermittelt werden muss.
-
Der Anmeldeserver führt eine Anzahl von Berechnungen in dem HSM aus. Er entschlüsselt Ka und erzeugt den Benutzerschlüssel Ku unter Verwendung der gleichen Berechnungen, die während des Verfahrens zum Einrichten des Kontos verwendet wurden, neu: Ks = DRSA(Ka, KLE)mod2n Ku = AES256(Ky, S[0])mod2n
-
Er verwendet dann Ku, um Au zu entschlüsseln: Ru = Au ⊕ Ku
-
Außerdem berechnet der Anmeldeserver einen Hash-Wert Bs von Ru: Bs = SHA256(Ru)mod2n
-
Alternativ und vorzugsweise wird zusätzlich mit Ku verschlüsselt: Bs = Ku ⊕ (SHA256(Ru)mod2n)
-
Der Wert Bs kann dem Benutzer zurück gegeben werden, was es dem Benutzer ermöglicht, die Echtheit der Website zu überprüfen. Alternativ kann in dem Fall, dass der Anmeldeserver in Besitz des privaten Abschnitts KLS eines Signaturschlüsselpaars ist, der Wert Bs durch seine Signatur mit dem Signaturschlüssel KLS ersetzt werden: Bs = SRSA(Bs, KLS)
-
In diesem Fall wird die Signatur, nicht der Wert Bs selbst, an den Benutzer gesendet. Der Benutzer kombiniert Bs und Bu und führt für diese Kombination eine Prüfung aus.
-
Außerdem kann der Anmeldeserver eine pseudozufällige Zahl Rs erzeugen, die verschlüsselt ist und verwendet werden kann, um Treu und Glauben des Benutzers zu prüfen: Rs = Random(n) Ps = Rs ⊕ Ku Qs = Rs ⊕ Ru
-
Alternativ und vorzugsweise wird Qs starker verschlüsselt; Qs = Rs ⊕ (SHA256(Ru)mod2n)
-
Der Anmeldeserver sendet Qs, Bs und Ps an den Webserver, der Bs und Ps an den Benutzer weiterleitet. Der Wert Qs wird von dem Webserver vorübergehend gespeichert. Der Computer des Benutzers vergleicht Bs und Bu. Wenn die zwei Werte identisch sind, weiß der Benutzer, dass die Website legitimiert und identisch mit der Website ist, bei welcher das Konto früher eingerichtet wurde. Wenn die zwei Werte nicht identisch sind, sollte der Benutzer den Anmeldeversuch abbrechen.
-
Wenn Bs mit Bu übereinstimmt, macht der Computer des Benutzers weiter, um PS zu entschlüsseln um Rs zu erhalten, und berechnet ein Hash von Rs: Rs = Ps ⊕ Ku Qu = Rs ⊕ Ru
-
Oder, wenn das alternative Verschlüsselungsprotokoll verwendet wird: Qu = Rs ⊕ (SHA256(Ru)mod2n)
-
Der Wert Qu wird an den Webserver zurückgegeben. Wenn Qu mit Qs übereinstimmt, hat der Webserver die Bestätigung, dass der Benutzer in Besitz von Ku ist, und der Benutzer wird angemeldet. Beide Werte Qs und Qu werden gelöscht.
-
Das Anmeldeverfahren ist sehr ähnlich, falls ein dynamischer geheimer Schlüssel verwendet wird, aber der von dem Benutzer gehaltene Schlüssel aktuell ist. Dieses Verfahren ist in Tabelle 2 zusammengefasst. Tabelle 2: Anmelden mit einem neuen Schlüssel
-
In der Ausführungsform von Tabelle 2 wird von dem Anmeldeserver Ks anstelle von Ku verwendet.
-
Das Anmeldeverfahren bedingt keine Übermittlung einer Benutzer-ID oder eines Passworts. Stattdessen werden bedeutungslose Zeichenketten oder Zahlen übermittelt. Das erfolgreiche Abhören von Kommunikationen zwischen dem Benutzer und dem Webserver stellt dem Hacker keine Werkzeuge bereit, die für einen unrechtmäßigen Anmeldeversuch verwendet werden könnten.
-
3. Anmeldung in einer Umgebung mit dynamischem geheimem Schlüssel
-
Für zusätzliche Sicherheit kann von Zeit zu Zeit ein neuer geheimer Schlüssel erzeugt werden und zu der Anordnung S hinzugefügt werden. Der geheime Schlüsse wird niemals nach außerhalb des HSM übermittelt und ist nicht besonders anfällig für einen Sicherheitsangriff. Der entsprechende Benutzerschlüssel Ku ist jedoch auf dem Computer eines Benutzers gespeichert und daher weit anfälliger für einen Sicherheitsangriff als der geheime Schlüssel selbst. Der Benutzerschlüssel kann, wie durch das folgende Beispiel dargestellt, aktualisiert werden, nachdem der geheime Schlüssel auf eine Weise geändert wurde, die kein Eingreifen auf der Seite des Benutzers erfordert.
-
Ein neuer geheimer Schlüssel S[0] wird mit einem Zeitplan erzeugt, der von dem Anmeldeserver bestimmt wird. Der geheime Schlüssel an der Position S[m – 1] wird aus der Anordnung entfernt. Alle anderen geheimen Schlüssel werden um eine Position in der Anordnung aufgerückt, so dass die Position S[0] frei für den neuen geheimen Schlüssel wird. Der älteste geheime Schlüssel in der Anordnung S wird nur gelöscht, wenn notwendig, um zu vermeiden, dass die Anzahl von geheimen Schlüsseln in der Matrix S eine vorbestimmte Anzahl m überschreitet. Wenn der geheime Schlüssel seit dem letzten erfolgreichen Anmeldeversuch des Benutzers unverändert ist, ist der Benutzerschlüssel Ku, der von dem Benutzer gehalten wird, aktuell, und der Anmeldeversuch wird erfolgreich sein.
-
Wenn der geheime Schlüssel jedoch seit dem letzten erfolgreichen Anmeldeversuch des Benutzers modifiziert wurde, ist der Benutzerschüssel Ku, der von dem Benutzer gehalten wird, nicht aktuell, und der Wert Bs stimmt nicht mit Bu überein. In einer Umgebung mit dynamischem geheimem Schlüssel führt dies nicht zu einem fehlgeschlagenen Anmeldeversuch. Stattdessen weist der Webserver den Anmeldeserver an, den Wert i um eins zu inkrementieren. Mit anderen Worten wird der Anmeldeserver angewiesen, das Anmeldeprotokoll mit dem neuesten alten Schlüssel S[i + 1] zu wiederholen. Wenn der letzte erfolgreiche Anmeldeversuch des Benutzers durchgeführt wurde, als S[i + 1] der aktuelle geheime Schlüssel war, entspricht der von dem Benutzer gehaltene Benutzerschlüssel diesem geheimen Schlüssel und die Anmeldung wird bei diesem zweiten Versuch erfolgreich sein. Wenn nicht, kann der Wert von i erneut um eins inkrementiert werden und das Anmeldeprotokoll kann mit dem nächst neuesten alten geheimen Schlüssel wiederholt werden. Der Webserver kann der Anzahl von Iterationen eine Grenze setzen, so dass ein Benutzer, der einen sehr alten Benutzerschlüssel hält, ein Rücksetzen des Kontos anfordern kann oder das Verfahren zum Einrichten eines Kontos wiederholen kann.
-
Wenn ein erfolgreicher Anmeldeversuch mit einem alten Benutzerschlüssel durchgeführt wurde, wird die Sitzung genutzt, um den Benutzerschlüssel zu aktualisieren. Der neue Benutzerschlüssel wird auf eine Weise ähnlich dem Einrichtungsprotokoll berechnet. Der neue Benutzerschlüssel Rs wird mit dem alten Benutzerschlüssel Ku verschlüsselt, so dass der Benutzer in der Lage sein wird, ihn zu entschlüsseln: Rs = AES256(Ks, S[0])mod2n Ps = Rs ⊕ Ku
-
Der Computer des Benutzers entschlüsselt Ps und speichert den Schlüsselring, wobei der alte Schlüssel, den der Benutzer gerade verwendet hat, überschrieben wird: Z[k] = (Random(128 – n) << n) ⊕ Rs wodurch alle Bits von Z[k] ersetzt werden.
-
Der Benutzer braucht sich nicht darüber bewusst sein, dass irgend etwas von diesem stattfindet. Der Benutzer merkt sich einfach die Indexnummer k für den Schlüssel, der verwendet wird, um sich an dieser bestimmten Website anzumelden. Der Benutzer kann nicht wissen, ob, oder wie oft der Schlüssel geändert wird.
-
Tabelle 3 fasst das Anmeldeverfahren für eine Umgebung mit dynamischem geheimem Schlüssel zusammen: Tabelle 3: Anmelden mit altem Schlüssel
-
Das Verfahren ist ähnlich dem von Tabelle 2, aber da in dem ersten Versuch ein ungültiger Schlüssel verwendet wurde, schließt der Webserver, dass Qu (das null ist) nicht gleich Qs ist. Dies führt den Webserver dazu, i um 1 zu inkrementieren, das heißt, den Anmeldeserver anzuweisen, die Berechnungen mit i = 1 zu wiederholen. Diese Schleife wird wiederholt, bis ein funktionierender Schlüssel gefunden wird oder die Grenze m für den Wert i erreicht wird.
-
Beispielhaft kann eine Website ihren geheimen Schlüssel einmal pro Monat ersetzen und kann den Zugang „aktiven” Benutzern erlauben, die weniger als ein Jahr davor auf die Website zugegriffen haben. Der für diese Website festgelegte aktive Schlüsselsatz hält zwölf Schlüssel, den aktuellen Schlüssel und die elf neuesten alten Schlüssel. Der Wert von m ist in diesem Beispiel 12. Wenn ein Benutzer einen Anmeldeversuch mit einem Schlüssel unternimmt, der älter als 12 Monate ist, wird diesem Benutzer der Zugang verweigert. Dies wird in Tabelle 4 zusammengefasst. Tabelle 4: Anmelden mit falschem Schlüssel
-
Beachten Sie, dass in Tabelle 4 auch Ks anstelle von Ka verwendet wird.
-
Die Rollen des Benutzers, des Webservers und des Anmeldeservers werden jeweils in den Algorithmen 3, 4 und 5 skizziert. Algorithmus 3: Anmeldeprogramm des Benutzers
Algorithmus 4: Anmeldeprogramm des Webservers
Algorithmus 5: Programm des Anmeldeservers, das in dem HSM läuft
-
1 ist eine schematische Darstellung einer alternativen Ausführungsform der vorliegenden Erfindung. Eine anfordernde Partei RP(i) leitet zum Beispiel unter Verwendung des Transport Layer Security-(TLS-)Protokolls eine sichere Verbindung mit einer autorisierenden Partei AP(j) ein. TLS wird allgemein als Vertrauenswürdigkeit, Integrität und Authentifizierung bereitstellend betrachtet. Im Verlauf des Festlegens der sicheren Verbindung stellt AP(j) ein Zertifikat C1 an RP(i) bereit.
-
Wenn die sichere Verbindung einmal eingerichtet ist, erzeugt RP(i) einen Einmalschlüssel N1. RP(i) verwendet das Zertifikat C1, um einen Verschlüsselungsschlüssel K[C1] nachzuschlagen, das vorher zum Beispiel in einer Registrierungssitzung oder einem Schlüsselauffrischungsprotokoll, wie in dem Zusammenhang der ersten Ausführungsform beschrieben, von AP(j) an RP(i) bereitgestellt wurde. Das Verknüpfen des passenden Schlüssels mit dem Zertifikat C1 stellt mehrere Vorteile bereit. Das Nachschlagen von Schlüsseln kann automatisiert werden, so dass RP sich keinen Schlüssel merken muss, der mit diesem spezifischen AP(j) verbunden ist. Außerdem stellt es sicher, dass der passende Schlüssel nur für diese spezifische AP(j) verwendet werden kann.
-
RP(i) erzeugt einen Wert A durch Verschlüsseln seines Einmalschlüssels N1 und von C1 unter Verwendung eines etablierten Verschlüsselungsprotokolls, zum Beispiel AES. RP(i) überträgt den Wert A zusammen mit einem Wert U, der mit der Identität von RP(i) verbunden ist, an AP(j). Der Wert U kann RP(i)s Benutzer-ID oder eine Verschlüsselung von RP(i)s Benutzer-ID sein. In einer bevorzugten Ausführungsform wird U durch Verschlüsseln von RP(i)s Benutzer-ID zusammen mit einem Wert, der für AP(j) eindeutig ist, zum Beispiel C1, erhalten. Auf diese Weise muss RP(i) sich nur eine Benutzer-ID merken oder speichern und dabei Werte von U erzeugen, die für jede AP eindeutig sind.
-
AP(j) überträgt die Werte U, A und C1 über eine sichere Verbindung, zum Beispiel eine gegenseitig authentifizierte TLS-Verbindung oder einen IPsec-Tunnel, an eine vertrauenswürdige dritte Partei (engl. Trusted Third Party; TTP). TTP schlägt in einer Liste AK[U] von Schlüsseln, die mit dem Wert U verbunden ist, nach und wählt aus dieser Liste UK[C1], den Schlüssel, der mit RP(i) verbunden ist, für die AP(j), die das Zertifikat C1 hält, aus, wobei UK[C1] = K.
-
TTP verwendet K und C1, um unter Verwendung des abgestimmten Verschlüsselungsprotokolls, zum Beispiel AES, den Wert A zu entschlüsseln, um N1 zu erzeugen. TTP erzeugt auch einen Einmalschlüssel N2, der mit N1 verschlüsselt wird, um den Wert B zu erzeugen. TTP überträgt B und N2 an AP(j), die wiederum B an RP(i) überträgt. Die Letztere verwendet N1, um B zu entschlüsseln, wodurch sie N2 erhält. RP(i) überträgt ihren Wert von N2 an AP(j), die ihn mit dem Wert von N2 vergleicht, den sie von TTP empfangen hat. Wenn die zwei Werte übereinstimmen, wird RP(i) der Zugang zu AP(j)s Site erlaubt.
-
Auf diese Weise wurde die Erfindung unter Bezug auf gewisse vorstehend diskutierte Ausführungsformen beschrieben. Es wird erkannt, dass diese Ausführungsformen empfänglich für vielfältige Modifikationen und alternative Formen sind, die Fachleuten der Technik wohlbekannt sind. Zum Beispiel kann das Anmeldeprotokoll modifiziert werden, indem man den Webserver den Wert von i basierend auf dem jüngsten erfolgreichen Anmeldeversuch des Benutzers bestimmen lässt, so dass der korrekte geheime Schlüssel in dem Ersten verwendet wird.
-
Viele Modifikationen können neben den vorstehend Beschriebenen an den hier beschriebenen Strukturen und Techniken vorgenommen werden, ohne von dem Geist und Schutzbereich der Erfindung abzuweichen. Obwohl spezifische Ausführungsformen beschrieben wurden, sind dies nur Beispiele und schränken den Schutzebereich der Erfindung nicht ein.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
-
Zitierte Nicht-Patentliteratur
-
- Satyanarayanan, M: ”Integrating security in a large distributed system.” ACM Transactions on Computer Systems, Bd. 7. Nr. 3, Seiten 247–280 [0008]
- unter http://srp.stanford.edu/design.html [0009]
- http://www.cisco.com/c/en/us/support/docs/security-vpn/public-key-infrastructure-pki/116167-technote-scep-00.html [0010]
- ”The Use of the Simple Certificate Enrollment Protocol (SCEP) and Untrusted Devices”, siehe http://www.css-security.com/wp-content/themes/css/scep/SCEP_and_Untrusted_Devices.pdf [0010]