-
Die Erfindung betrifft eine Lösung zur Nutzung eines in einem Netzwerk angeordneten Proxy-Servers für den Datenaustausch zwischen Netzwerk-Clients beziehungsweise Clients des betreffenden Netzwerks. Bei den besagten Clients handelt es sich um softwarebasierte Anwendungen, nämlich Client-Anwendungen, welche durch Netzwerkendeinrichtungen unter Austausch von Daten zwischen diesen Netzwerkendeinrichtungen verarbeitet werden.
-
Im Zuge von Entwicklungen, wie IoT (Internet of Things) oder Smart-Home ist es im zunehmenden Maße erforderlich, dass Daten zwischen Netzwerkendeinrichtungen ausgetauscht werden müssen, welche Daten aus Sicherheitsgründen oder aus ablauforganisatorischen Gründen bei der Nutzung entsprechender Anwendungen gar nicht oder nur im sehr beschränkten Umfang direkt untereinander austauschen können. Ein umfassender Datenaustausch zwischen den Netzwerkendeinrichtungen erfolgt in diesen Fällen über als Proxy-Server fungierende Servereinrichtungen beziehungsweise Serversysteme. An derartige Systeme werden dabei sehr hohe Anforderungen gestellt. So müssen diese insbesondere vorzugsweise rund um die Uhr verfügbar sein sowie eine große Zahl gleichzeitiger Anfragen von Netzwerkendeinrichtungen, welche sich ihrer zum Zweck des Datenaustausches bedienen möchten, gleichzeitig verarbeiten können.
-
Aufgrund von Latenzen, die im Falle größerer Entfernungen zwischen den Proxy-Servern und den sie nutzenden Netzwerkendeinrichtungen auftreten, werden Proxy-Server, die entsprechende Anwendungen mit dem Erfordernis eines Datenaustauschs zwischen Netzwerkendeinrichtungen offerieren, wie etwa Server zur Bereitstellung eines Dienstes über ein Webportal, zunehmend mehrfach ausgelegt und dabei räumlich verteilt im Netzwerk angeordnet, um die Entfernungen zu den sie nutzenden Netzwerkeinrichtungen zu verringern. Dies bringt jedoch den Nachteil mit sich, dass sich die Latenz der Systeme beziehungsweise Proxy-Server untereinander erhöht und dadurch ein synchroner Betrieb erschwert wird.
-
Um Missbrauch zu vermeiden ist es üblich, dass sich Netzwerkendeinrichtungen vor der Genehmigung einer Verwendung der Ressourcen des Proxy-Servers gegenüber diesem authentisieren müssen. Wird eine Netzwerkendeinrichtung anhand der durch sie beziehungsweise durch ihren Nutzer dazu übermittelten Authentisierungsmerkmale erfolgreich authentifiziert, autorisiert sie der Proxy-Server zur Nutzung seiner Ressourcen, das heißt, im Kontext der nachfolgenden Darstellungen für einen über den Proxy-Server erfolgenden Datenaustausch mit anderen Clients. Zu diesem Zweck wird nach der erfolgreichen Authentifizierung eines sich bei dem Proxy-Server anmeldenden Clients durch den betreffenden Proxy-Server ein Datensatz generiert, welcher einen Austauschpunkt bezeichnet. Der entsprechende Austauschpunkt beziehungsweise die ihn bezeichnenden Daten werden auf dem Proxy-Server gespeichert. Jedem Client, der auf diesen Austauschpunkt zugreift, wird – gegebenenfalls wiederum nachdem er sich authentisiert hat – durch den Proxy-Server ein Datenaustausch mit anderen, denselben Austauschpunkt verwendenden Clients ermöglicht.
-
Üblicherweise haben die vorgenannten, auf einem Proxy-Server gespeicherten Austauschpunkte eine zeitlich begrenzte Gültigkeit, so dass sie nach einer gewissen Zeitdauer, in der sie nicht verwendet werden, durch den Proxy-Server wieder gelöscht werden. Bei den bestehenden Systemen müssen in diesem Zusammenhang Maßnahmen ergriffen werden, um eine Überlastung der Systeme zu vermeiden. So könnten beispielsweise Angreifer sehr viele Austauschpunkte anfragen und damit den Speicher des Systems sowie damit letztlich das System selbst überlasten. Zudem ist es als nachteilig anzusehen, dass die Ermittlung der Austauschpunkte, welche nach dem Ablauf ihrer zeitlich begrenzten Geltungsdauer zu löschen sind, bei einer entsprechenden Vielzahl solcher Austauschpunkte erhebliche Rechenzeit erfordert. Auch dies kann im Falle einer entsprechend umfangreichen Nutzung eines Proxy-Servers zu einer sehr starken Systembelastung führen.
-
Aufgabe der Erfindung ist es, eine Lösung bereitzustellen, welche die zuvor genannten Nachteile vermeidet. Dazu ist ein Verfahren anzugeben, durch dessen Umsetzung das Risiko einer Überlastung von Proxy-Servern durch Angriffe in Form einer Vielzahl an einen jeweiligen Server gerichteter Anfragen reduziert wird. Darüber hinaus soll das Verfahren die Auslegung von Systemen, in welchen der Datenaustausch zwischen Netzwerkendeinrichtungen über einen Proxy-Server erfolgt, im Hinblick auf eine Verringerung der Latenzen unterstützen. Dabei soll das Verfahren vorzugsweise so ausgestaltet sein, dass es selbst gegen Manipulationen geschützt ist.
-
Die Aufgabe wird durch ein Verfahren mit den Merkmalen des Patentanspruchs 1 sowie in weiterer Ausgestaltung gemäß den Unteransprüchen gelöst.
-
Wie bereits ausgeführt, bezieht sich das vorgestellte Verfahren auf ein Verfahren zur Nutzung eines in einem Netzwerk angeordneten Proxy-Servers für den Datenaustausch zwischen Clients des Netzwerks, das heißt zwischen Client-Anwendungen, welche von Netzwerkendeinrichtungen verarbeitet werden. Im Zusammenhang damit wird erfindungsgemäß vorgeschlagen, dass der Datenaustausch zwischen den Clients über den Proxy-Server unter Nutzung eines aus Daten bestehenden Tokens erfolgt.
-
Das betreffende Token wird erfindungsgemäß nach der Anmeldung eines ersten Clients bei dem Proxy-Server durch den Proxy-Server generiert. Danach wird das Token an den bei dem Proxy-Server angemeldeten ersten Client übertragen und von diesem ersten Client in Vorbereitung eines nachfolgenden Datenaustauschs unter Nutzung eines Messaging-Direktkanals an einen oder mehrere Clients übertragen. Allen sich danach unter Nutzung dieses Tokens bei dem Proxy-Server anmeldenden Clients ist dann untereinander der Datenaustausch über den Proxy-Server ermöglicht.
-
Das erfindungsgemäße Verfahren geht demnach von der Überlegung aus, den oder die Proxy-Server eines Netzwerks von der Verwaltung von Austauschpunkten für den Datenaustausch zwischen Netzwerkendeinrichtungen beziehungsweise zwischen auf derartigen Netzwerkendeinrichtungen ablaufenden Client-Anwendungen zu befreien. Bereits hierdurch verringert sich die Last für den jeweiligen Proxy-Server. Darüber hinaus wird aber vermieden, dass der betreffende Proxy-Server im Wege eines Angriffs vermittels einer großen Zahl von Anfragen blockiert werden kann. Anstelle des Abspeicherns und der Verwaltung von Daten zu Austauschpunkten auf dem jeweiligen Proxy-Server wird den Netzwerkendeinrichtungen der Datenaustausch über den Proxy-Server durch ein in ihrem Besitz befindliches Token ermöglicht, mit dessen Hilfe sich die Netzwerkendeinrichtungen für den Datenaustausch bei dem Proxy-Server anmelden. Jedem Client wird also in Form des Tokens eine Information zur Verfügung gestellt, welche alle notwendigen Daten enthält und die der jeweilige Client bei seinem nächsten Zugriff auf den Proxy-Server mitgeben muss, wobei diese Information, wie später noch näher ausgeführt, vorzugsweise nicht fälschbar ist, so dass kein unberechtigter Zugang zu dem Proxy-Server erschlichen werden kann.
-
Das betreffende Token wird hierbei über einen schmalbandigen, selbst nicht für die Übertragung großer Datenmengen mit den eigentlichen Nutzdaten ausgebildeten Messaging-Direktkanal zwischen den später am Datenaustausch beteiligten Netzwerkendeinrichtungen ausgetauscht beziehungsweise nach seinem Empfang von dem das Token generierenden Proxy-Server durch den ersten, sich zu diesem Zweck bei dem Proxy-Server anmeldenden Client an die anderen Clients übermittelt.
-
Bei dem vorstehend wiederholt genannten Token handelt es sich, wie bereits ausgeführt, um eine Datensequenz. In dieser sind mindestens eine Treffpunktnummer und vorzugsweise ein Ablaufzeitpunkt, zu welchem das Token ungültig wird, codiert. Weitere Ausführungen zur Ausbildung des Tokens sollen später, insbesondere auch im Zusammenhang mit der Erläuterung eines konkreten Ausführungsbeispiels, abgegeben werden.
-
Im Zusammenhang mit einer vorteilhaften praxisrelevanten Umsetzung bezieht sich das Verfahren auf ein Netzwerk, in welchem mehrere Proxys territorial verteilt angeordnet sind. Das Verfahren ist hierbei so gestaltet, dass es sich bei dem im Rahmen eines zwischen zwei oder mehr Netzwerkendeinrichtungen erfolgenden Datenaustauschs genutzten Proxy-Server um einen der mehreren in dem Netzwerk verteilt angeordneten Proxy-Server handelt. Der erste Client, an den dieser Proxy-Server das von ihm generierte Token überträgt, übermittelt an die anderen Clients zusammen mit dem Token oder als dessen Bestandteil Daten, welche den für den nachfolgenden Datenaustausch zwischen den Clients zu nutzenden Proxy-Server eindeutig identifizieren.
-
Im Falle der Möglichkeit einer Nutzung eines von mehreren Proxy-Servern ist das Verfahren vorzugsweise so ausgestaltet, dass der erste Client den für den Datenaustausch mit den anderen Clients zu verwendenden Proxy-Server aus einer Liste auswählt, in welcher die Adressen mehrerer der verteilt in dem Netzwerk angeordneten Proxy-Server enthalten sind. Für die Art beziehungsweise den Ort der Implementierung der genannten Liste mit den Adressen der im Rahmen einer bestimmten Netzwerkanwendung für den Datenaustausch zwischen bei der Nutzung der Anwendung miteinander kommunizierenden Clients zur Verfügung stehenden Proxy-Server und damit auch für die Art des Zugriffs auf diese Liste sind unterschiedliche Verfahrens- und Systemgestaltungen denkbar.
-
Besonders bevorzugt ist es hierbei, dass die entsprechende Adressliste durch einen zentralen Verzeichnisdienst vorgehalten beziehungsweise für den Abruf durch einen Client von einem solchen Verzeichnisdienst zusammengestellt wird. Im Hinblick darauf, dass ein wesentliches Ziel des vorgestellten Verfahrens die Verringerung von Latenzen beim Datenaustausch von Clients über einen Proxy-Server ist, kann die Bereitstellung der Adressliste durch den Verzeichnisdienst in der Weise erfolgen, dass dieser die Liste jeweils in Abhängigkeit der Lokalisierung eines sie anfragenden Clients flexibel zusammenstellt, so dass Adressen von sich in der Nähe des die Liste abrufenden Clients befindenden Proxy-Servern gewissermaßen in einer Art Ranking auf vorderen Plätzen der Liste geführt werden. Möglich ist es aber auch, dass erste Client selbst, das heißt eine entsprechende auf einer Netzwerkendeinrichtung ablaufende Anwendung aus einer von dem Verzeichnisdienst empfangenen Liste mit Adressen von Proxy-Servern den für die betreffende Netzwerkendeinrichtung jeweils nächstgelegenen Proxy-Server auswählt.
-
Eine andere Möglichkeit besteht darin, dass die Liste mit den Adressen der Proxy-Server Bestandteil einer jeweiligen, einen Proxy-Server für den Datenaustausch nutzenden Netzwerkanwendung ist. So ist es denkbar, dass eine solche Liste beispielsweise unmittelbar in eine App integriert wird, mittels welcher es einem Smartphone als dem ersten Client ermöglicht ist, über einen Proxy-Server dieser Liste Daten mit Netzwerkendeinrichtungen einer Smart-Home-Umgebung, wie beispielsweise Kameras oder Heizkörperthermostate, als weitere Clients auszutauschen.
-
Unabhängig davon, ob die Liste mit den Adressen der für den Datenaustausch nutzbaren Proxy-Server durch einen zentralen Verzeichnisdienst gehalten oder als integraler Bestandteil einer App oder sonstigen Netzwerkanwendung zur Verfügung gestellt wird, ist es selbstverständlich für das Funktionieren des Verfahrens erforderlich, dass die betreffende Liste aktuell gehalten wird. Die Liste ist demnach regelmäßig zu aktualisieren, das heißt gewissermaßen mit den tatsächlichen Verhältnissen zu synchronisieren. Allerdings ist es hierbei unschädlich, wenn die Liste vorübergehend beziehungsweise zeitweise einmal nicht mit den tatsächlichen Verhältnissen übereinstimmt. Im ungünstigsten Falle führt dies lediglich dazu, dass ein Client, respektive der erste Client, bei einem von ihm aus der Liste ausgewählten Proxy-Server das für die Durchführung des Verfahrens erforderliche Token anzufordern versucht, der betreffende Proxy-Server aber mangels tatsächlicher Aktualität der Liste vielleicht vorübergehend oder gar nicht mehr verfügbar ist. In diesem Falle würde der erste Client einfach einen durch einen weiteren Listeneintrag bezeichneten anderen Proxy-Server zur Anforderung eines entsprechenden Tokens kontaktieren.
-
Wie bereits ausgeführt, umfassen die das Token repräsentierenden Daten zumindest eine Treffpunktnummer, unter welcher den über das Token verfügenden Clients ein Datenaustausch ermöglicht ist, bei welchem die Daten über den hierfür zuvor ausgewählten Proxy-Server geführt werden. Auch gemäß dem vorgeschlagenen Verfahren ist es vorzugsweise vorgesehen, dass eine solche Treffpunktnummer nur eine begrenzte, beispielsweise an eine maximale Zeitdauer der Inaktivität, während der keine Daten über den Proxy-Server ausgetauscht werden, Gültigkeit hat. Demgemäß sind bei einer entsprechenden Verfahrensgestaltung Bestandteil des Tokens zudem Daten, durch welche ein solcher Ablaufzeitpunkt für die Treffpunktnummer festgelegt wird. Aus Gründen der Sicherheit, nämlich insbesondere, um eine Manipulation des Tokens und damit des Verfahrens zu verhindern, ist vorzugsweise außerdem eine geheime Information ein weiterer Bestandteil des Tokens. Bei dieser geheimen Information handelt es sich um eine ausschließlich mit dem ausgewählten, das Token bereitstellenden Proxy-Server assoziierte und nur ihm bekannte Information. Diese kann beispielsweise beim Starten des Proxies zufällig bestimmt oder fest in der Konfiguration verankert werden. Sie kann gegebenenfalls auch regelmäßig gewechselt werden. Entscheidend ist es hierbei lediglich, dass die betreffende geheime Information eindeutig ist und somit das sie umfassende Token gewissermaßen ein Unikat ist. Die genaue Art und Weise, wie diese geheime Information bestimmt wird, ist für das Verfahren im Grunde unerheblich. Es muss lediglich sichergestellt werden, dass sie so lang ist, dass die Information durch Ausprobieren nicht erraten werden kann. Die geheime Information besteht dazu beispielsweise aus 64 zufälligen Bits.
-
Besonders bevorzugt ist es darüber hinaus, dass das Token zum Schutz vor Manipulationen mittels einer Hash-Funktion, beispielsweise mittels der Hash-Funktion SHA-256 der SHA-2-Familie kryptographisch gesichert wird. Für Letzteres ist selbstverständlich auch die Verwendung anderer Hash-Algorithmen möglich. Das Verfahren ist dabei vorzugsweise so gestaltet, dass die geheime Information selbst als erstes gehasht wird, so dass der Hash-Algorithmus damit vorinitialisiert werden kann, um im Betrieb Zeit hierfür zu sparen.
-
Zusätzliche Sicherheit für das Verfahren beziehungsweise den Schutz der Proxy-Server gegen Angriffe wird dadurch erreicht, dass sich der erste, das Token bei dem von ihm ausgewählten Proxy-Server abrufende Client auf der Basis einer früher erfolgten Registrierung authentisieren muss. Dazu muss der Client an den von ihm ausgewählten Proxy-Server zunächst seine Authentisierungsmerkmale übermitteln, bevor der Proxy-Server nach erfolgreicher Authentifizierung das von ihm generierte Token an den Client überträgt und ihn damit für die Nutzung des Proxy-Servers zum Zweck eines Datenaustausches mit anderen Clients autorisiert. Die Authentisierung des Clients kann beispielsweise mittels Benutzername und Passwort, mittels eines OAuth2-Tokens oder unter Nutzung eines LDAP Systems geschehen. Je nach Implementierung des Verfahrens können aber selbstverständlich auch beliebige andere Authentisierungsverfahren hierfür zum Einsatz gelangen.
-
Von der Implementierung ist es hierbei auch abhängig, ob die Autorisierungsmerkmale, welche der erste Client bei der Anforderung des Tokens für den Datenaustausch an den Proxy-Server übermittelt, durch den Proxy-Server selbst oder durch einen gesonderten, mit ihm interagierenden Authentisierungsserver überprüft werden. Beide Möglichkeiten sind insoweit gleichwertig. Hierbei ist außerdem zu bemerken, dass es für die Sicherheit des Verfahrens ausreichend ist, wenn sich der erste, das Token für den Datenaustausch bei dem Proxy-Server anfordernde Client gegenüber diesem Proxy-Server in der zuvor beschriebenen Weise authentisiert. Die Authentifizierung der anderen, den Proxy-Server im Zuge eines Datenaustauschs mit dem ersten Client und untereinander nutzenden Clients als berechtigte Clients erfolgt demgegenüber mit Hilfe des insoweit auch die Funktion eines Authentisierungsmerkmals besitzenden manipulationssicheren Tokens, für dessen Erhalt sich der erste Client mit anderen geeigneten Authentisierungsmerkmalen beim Proxy-Server authentisiert hat. Die Kommunikation zwischen den Systemkomponenten also zwischen den Clients und einem jeweiligen, für den Datenaustausch zwischen ihnen genutzten Proxy-Server sollte vertraulich erfolgen, beispielsweise über eine TLS-Verbindung.
-
Das vorgestellte Verfahren weist folgende Vorteile auf. Ein nach ihm arbeitendes System kann sehr einfach horizontal skalieren. Das heißt, durch Hinzufügen von neuen Proxy-Servern und deren Eintragung in die vorzugsweise durch einen Verzeichnisdienst gehaltene Liste kann die Leistungsfähigkeit des Systems beliebig erhöht werden. Da keine Kommunikation der Proxy-Server untereinander erfolgt, kann das System linear skalieren. Ebenso kann die Leistungsfähigkeit herabgesetzt werden, indem Proxies entfernt werden. Das Verfahren stellt dabei sicher, dass Clients in diesem Fall automatisch auf andere Proxies beziehungsweise Proxy-Server ausweichen. Ferner ist eine genaue Uhrzeit beziehungsweise eine zwischen dem für den Datenaustausch verwendeten Proxy-Server und den Clients synchronisierte Uhrzeit für den Betrieb des Verfahrens nicht notwendig. Es muss lediglich sichergestellt sein, dass die Uhrzeit hinreichend genau läuft, um den Ablauf der Gültigkeit eines insbesondere durch die Treffpunktnummer charakterisierten erkennen zu können. Schließlich kann das System auch weiter arbeiten, wenn es zu einer Partitionierung des Systems kommt, da die einzelnen Proxy-Server nicht miteinander kommunizieren müssen.
-
Nachfolgend soll in der Art eines Ausführungsbeispiels ein möglicher Ablauf des erfindungsgemäßen Verfahrens mit Hilfe des in der 1 gezeigten Sequenzdiagramms erläutert werden.
-
Der in dem Sequenzdiagramm veranschaulichte Ablauf des Verfahrens bezieht sich auf einen zwischen zwei Clients – Client A und Client B – im Rahmen einer Netzwerkanwendung über einen Proxy-Server vollziehenden Datenaustausch. Das dargestellte Beispiel geht hierbei davon aus, dass die besagte Netzwerkanwendung mittels mehrerer, verteilt in dem Netzwerk angeordneter Proxy-Server genutzt werden kann. Gemäß dem Beispiel ist es dabei ferner vorgesehen, dass durch einen ebenfalls auf einem Server gehosteten Verzeichnisdienst eines Liste mit Adressen der im Zusammenhang mit der Netzwerkanwendung für den Datenaustausch zwischen Clients verwendbaren Proxy-Server hält. Bestandteil des insoweit zugrundeliegenden Systems ist außerdem ein Authentisierungsserver zur Prüfung der im Zuge des Abrufs des für den Datenaustausch verwendbaren Tokens von dem Client A an den ausgewählten Proxy-Server übergebenen Authentisierungsmerkmale.
-
Demnach vollzieht sich folgender Ablauf des erfindungsgemäßen Verfahrens. Sofern dem Client A die Liste der möglichen Proxies beziehungsweise Proxy-Server nicht bekannt ist, wird durch ihn von einem Verzeichnisdienst eine Adressliste der für einen Datenaustausch mit anderen Clients im Zuge des Ablaufs der bereits genannten Netzwerkanwendung, wie beispielsweise einer Smart-Home-Anwendung, nutzbaren Proxy-Server bezogen. Der entsprechende Verzeichnisdienst kann dabei aufgrund entsprechender Codierung in der Netzwerkanwendung selbst von dem Client A adressiert beziehungsweise angesprochen werden. Der Client A wählt entweder den ersten, durch seine Netzwerkadresse in der Liste benannten Proxy-Server aus oder bestimmt den Proxy-Server, über welchen er die Netzwerkanwendung ausführen beziehungsweise den Datenaustausch mit dem beziehungsweise den anderen Clients B (hier sei angenommen, mit einem anderen Client B) abwickeln will, nach einem als Bestandteil der Netzwerkanwendung ausgebildeten Regelwerk. Über dieses Regelwerk kann dabei erreicht werden, dass der Client A dem zu seiner augenblicklichen Position beim Starten der Netzwerkanwendung jeweils nächstgelegenen Proxy-Server für den Datenaustausch nutzt.
-
Nach erfolgter Auswahl wird der betreffende Proxy-Server durch den Client A zur Anforderung des erfindungsgemäß für den Datenaustausch mit dem Client B zu verwendenden Tokens kontaktiert. Im Zuge dessen muss sich der Client A zunächst gegenüber diesem Proxy-Server authentisieren. Hierzu übermittelt er entsprechende Authentisierungsmerkmale, wie beispielsweise einen Benutzernamen und ein Passwort, an den von ihm kontaktierten Proxy-Server. Letzterer leitet in dem gezeigten Beispiel diese Autorisierungsmerkmale an einen speziellen Authentisierungsserver zur Prüfung weiter.
-
Werden die Autorisierungsmerkmale durch diesen Authentisierungsserver als korrekt erkannt, der Client A also durch den Authentisierungsserver authentifiziert, teilt dieser dieses dem Proxy-Server mit, welcher daraufhin das durch den Client A angeforderte Token an den Client A übermittelt und ihn somit zur Nutzung des Proxy-Servers für den Datenaustausch mit dem anderen Client B autorisiert. Andernfalls, also sofern die Authentifizierung fehlschlägt, wird der Vorgang abgebrochen.
-
Das durch den Proxy-Server an den Client A übermittelte Token enthält eine eindeutige mit dem Proxy-Server assoziierte geheime Information, Daten über die Geltungsdauer oder über den Ablaufzeitpunkt der Gültigkeit des Tokens und eine Treffpunktnummer. Jedoch wird das Token mit den darin enthaltenen Informationen von dem Proxy-Server nicht im Klartext an den Client A übermittelt, sondern in Form eines durch die Anwendung einer Hashfunktion auf die entsprechende Datensequenz erzeugten Hashwertes. Nach erfolgreicher Authentifizierung und dem Erhalt des Tokens beziehungsweise des das Token repräsentierenden Hashwertes vom Proxy-Server, übermittelt der Client A dieses Token (Hashwert) zusammen mit einer den für den Datenaustausch zu nutzenden Proxy-Server identifizierenden Information über einen Messaging-Direktkanal an den Client B. Beide Clients A, B können danach unter Nutzung des Tokens zur Authentifizierung gegenüber dem Proxy-Server bis zum Ablauf der maximalen Geltungsdauer des Tokens miteinander Daten über den Proxy-Server austauschen.