-
DER ERFINDUNG ZUGRUNDE
LIEGENDER ALLGEMEINER STAND DER TECHNIK
-
Bereich der Technik
-
Die
vorliegende Erfindung betrifft allgemein Netzwerksicherheitsprotokolle
und insbesondere ein Verfahren, das dazu dient, die Vertraulichkeit
einer sicheren Sitzung zwischen einem Client und einem oder mehreren
Ursprungs-Servern
auf einen zwischengeschalteten Dritten (z.B. einen Transcodierungs-Proxyserver)
auszuweiten.
-
Der Erfindung zugrunde
liegender allgemeiner Stand der Technik
-
Netzwerksicherheitsprotokolle
wie zum Beispiel das Secure-Sockets-Layer-Protokoll
(SSL) von Netscape und das Transport-Layer-Security-(TLS-)Protokoll der Internet
Engineering Task Force (IETP) bieten Vertraulichkeit und Datensicherheit
zwischen Anwendungen, die Daten austauschen. Beispielsweise werden
diese Protokolle im Allgemeinen verwendet, um die Sicherheit von
elektronischen Handelstransaktionen über das Internet zu gewährleisten.
-
In "Internet security:
difficulties and solutions",
International Journal of Medical Informatics, März 1998, Seiten 67 bis 74,
legt M. Norifusa auf den Seiten 71 bis 73 eine Beschreibung des
Protokolls "SOCKS-5" offen.
-
In
letzter Zeit hat die Rechnerindustrie versucht, auch andere Einheiten
als solche, die normalerweise als ein herkömmlicher Rechner betrachtet werden,
um Datenverarbeitungs- und Datenübertragungsfähigkeiten
zu erweitern. Diese Einheiten sind recht unterschiedlich, und zu
ihnen zählen
unter anderem beispielsweise persönliche digitale Assistenten
(PDAs), Business Organizer (z.B. der WorkPad® von
IBM® und
der Palmpilot® von
3Com®),
Smartphones, Mobiltelefone, andere tragbare Einheiten und dergleichen.
Der Einfachheit halber werden diese Einheiten als Klasse manchmal
als "Pervasive-Computing"-Clients (Clients
für zeitnahe
und standortunabhängige
Anwendungen) bezeichnet, da es sich hierbei um Einheiten handelt,
die zur Verbindung mit Servern in einem Rechnernetzwerk vorgesehen
sind und ungeachtet ihres Standorts zu Datenverarbeitungszwecken
genutzt werden sollen.
-
Üblicherweise
unterstützen
Pervasive-Computing-Clients jedoch nicht die gesamte Funktionalität eines
auf Windows beruhenden HTML-Client. Folglich sind gewöhnlich Transcodierungsdienste notwendig,
um Daten, die auf dem standortunabhängigen, ins weltweite Netz
integrierten (pervasiven) Client dargestellt werden sollen, aus
einer Quellen-Auszeichnungs-(Markup)Sprache (z.B. HTML) in einer
andere Sprache (z.B. Handheld Device Markup Language (HDML)) zu übersetzen.
Die Bereitstellung von Transcodierungsdiensten über eine sichere Netzwerkverbindung
ist jedoch problematisch. Insbesondere besteht ein grundlegender
Konflikt zwischen der Sicherheit und Transcodierungsdiensten, da
herkömmliche
Sicherheitsprotokolle wie SSL und TLS speziell entwickelt wurden,
um zu verhindern, dass ein Dritter in die Übertragung zwischen dem Client und
dem Server eingreift.
-
Die
Beschränkung
des Eingriffs eines Dritten in eine sichere Sitzung ist auch bei
anderen Anwendungen problematisch. Wenn sich ein Client zum Beispiel
hinter einer Firewall befindet, können SSL/TLS-Übertragungen
an Server im externen Netzwerk nicht ohne weiteres geprüft oder
in anderer Weise überwacht
werden. Folglich können
Datensätze
oder andere kritische Informationen, möglicherweise ohne Genehmigung
des Administrators, von dem Client übertragen werden. Als ein weiteres
Beispiel kann ein Client, der mit einem Server über eine sichere Verbindung
Daten austauscht, nicht von einem Zwischenspeicherungsmechanismus
oder einem Vorababruf-Mechanismus
eines Dritten profitieren, die andernfalls bei der Verringerung
des Bedarfs an Netzwerkressourcen und der Verbesserung des Datenaustauschs
zwischen den Einheiten nützlich wären.
-
Es
wäre wünschenswert,
einen Mechanismus bereitzustellen, mittels dessen ein Client ausreichend
Sicherheitsinformationen an einen Proxy-Server übertragen könnte, um den Proxy-Server in
die Lage zu versetzen, eine bestimmte Funktion auszuführen (z.B.
im Namen des Client zu transcodieren, zu prüfen, zu überwachen, zwischenzuspeichern, vorab
abzurufen, zu verschlüsseln/entschlüsseln usw.),
ohne die Sicherheit des Netzwerkprotokolls zu mindern. Auch wäre es darüber hinaus
wünschenswert,
einem solchen Proxy-Server zu ermöglichen, während des Vorgangs der Bedienung
einer Anforderung im Namen des Client Daten von einem anderen Ursprungs-Server
zu sichern.
-
OFFENLEGUNG DER ERFINDUNG
-
Ein
Client, der ein Netzwerksicherheitsprotokoll (z.B. SSL oder TLS)
verwendet, um mit einem Ursprungs-Server Daten auszutauschen, ermöglicht einem
Proxy-Server die Teilnahme an der Sitzung, ohne die Sicherheitsattribute
der Sitzung zu ändern. Erfindungsgemäß wird ein
Protokoll bereitgestellt, um dem Client zu ermöglichen, ein mit einem Ursprungs-Server
ausgehandeltes, von Client und Server geteiltes Sitzungsgeheimnis
(session master secret) entgegenzunehmen und dieses Geheimnis sicher
an den Proxy-Server zu übermitteln.
Der Proxy-Server verwendet dieses gemeinsame Geheimnis (master secret)
zur Verschlüsselung/Entschlüsselung
von Daten, die zwischen dem Client und dem Server übertragen
werden. Wenn der Proxy-Server zusätzliche sichere Daten von einem
zweiten Ursprungs-Server benötigt,
während
er eine bestimmte Anforderung des Client bedient, bittet der Proxy-Server
den Client, das Protokoll zu wiederholen, um ein weiteres gemeinsames
Sitzungsgeheimnis (das mit dem zweiten Ursprungs-Server ausgehandelt wird) zu erhalten,
welches dann an den Proxy-Server übermittelt wird, um es beim
Abruf von Daten von dem zweiten Ursprungs-Server zu verwenden.
-
Die
vorliegende Erfindung ermöglicht
einem bestimmten zwischengeschalteten Dritten oder einem Proxy-Server
die Teilnahme an einer sicheren Sitzung zwischen einem Client und
einem oder mehreren Ursprungs-Servern. Vorzugsweise nimmt der Dritte
ohne ausdrückliche
Kenntnis eines bestimmten Ursprungs-Servers teil. Folglich macht das Verfahren keine Änderungen
am Ursprungs-Server oder an dem Quittungsprotokoll erforderlich,
das bei der Aushandlung des Sitzungsgeheimnisses verwendet wird.
-
Die
vorliegende Erfindung ermöglicht
das gleichzeitige Vorhandensein von Sicherheits- und anderen Diensten
(z.B. die Transcodierung, Zwischenspeicherung, Überwachung, Verschlüsselung/Entschlüsselung
im Namen des Client und dergleichen), während Nachrichten entsprechend
einem Netzwerksicherheitsprotokoll übertragen werden.
-
Die
vorliegende Erfindung stellt ein Verfahren bereit, das es einem
Proxy-Server ermöglicht,
an einer sicheren Übertragung
zwischen einem Client und einem ersten Ursprungs-Server teilzunehmen, wobei
das Verfahren die folgenden Schritte umfasst: (a) Aufbauen einer
ersten sicheren Sitzung zwischen dem Client und dem Proxy-Server;
(b) nach der Überprüfung der
ersten sicheren Sitzung Aufbauen einer zweiten sicheren Sitzung
zwischen dem Client und dem Proxy-Server, wobei die zweite sichere
Sitzung den Proxy-Server ersucht, die Funktion eines Kanals (conduit)
zum ersten Ursprungs-Server zu übernehmen;
(c) Veranlassen des Client und des ersten Ursprungs-Servers, ein
gemeinsames Sitzungsgeheimnis auszuhandeln; (d) Veranlassen des
Client, das gemeinsame Sitzungsgeheimnis unter Nutzung der ersten
sicheren Sitzung an den Proxy-Server zu übermitteln, damit der Proxy-Server
an der sicheren Übertragung
teilnehmen kann; (e) als Reaktion auf eine vom Client an den ersten
Ursprungs-Server gerichtete Anforderung Aufbauen einer dritten sicheren Sitzung
zwischen dem Client und dem Proxy-Server, wobei die dritte sichere
Sitzung den Proxy-Server ersucht, die Funktion eines Kanals zum
zweiten Ursprungs-Server zu übernehmen;
(f) Veranlassen des Client und des zweiten Ursprungs-Servers, ein
neues gemeinsames Sitzungsgeheimnis auszuhandeln; und (g) Veranlassen
des Client, das neue gemeinsame Sitzungsgeheimnis unter Nutzung
der im Schritt (a) aufgebauten ersten sicheren Sitzung an den Proxy-Server
zu übermitteln.
-
Die
vorliegende Erfindung stellt auch ein kryptografisches System bereit,
das Folgendes umfasst: einen Client; eine Gruppe von Servern; einen Proxy-Server;
einen Netzwerkprotokolldienst, um dem Client und jedem Server den
Datenaustausch über
eine sichere Verbindung zu ermöglichen;
ein Rechnerprogramm (i), um den Client so zu steuern, dass er eine
erste sichere Verbindung zu dem Proxy-Server anfordert, (ii) um
den Client als Reaktion auf die Bestätigung der Gültigkeit
eines Zertifikats von dem Proxy-Server so zu steuern, dass er eine zweite
sichere Verbindung zu dem Proxy-Server
anfordert, wobei die zweite sichere Verbindung den Proxy-Server
ersucht, die Funktion eines Kanals zu einem bestimmten Server zu übernehmen,
(iii) um den Client so zu steuern, dass er mit dem bestimmten Server über den
Kanal verhandelt, um ein gemeinsames Sitzungsgeheimnis zu erhalten;
und (iv) um den Client nach dem erfolgreichen Abschluss der Verhandlung
so zu steuern, dass er das gemeinsame Sitzungsgeheimnis unter Verwendung
der ersten sicheren Verbindung an den Proxy-Server übermittelt; und
ein Rechnerprogramm (i), um den Proxy-Server so zu steuern, dass
er das gemeinsame Sitzungsgeheimnis zur Erzeugung von bestimmten
kryptografischen Informationen nutzt, (ii) um den Proxy-Server so
zu steuern, dass er die Anforderung stellt, dass der Client selektiv
eine getrennte sichere Verbindung mit einem anderen Server herstellt,
und (iii) um den Proxy-Server in einen aktiven Betriebszustand zu schalten,
während
dessen er an Übertragungen
zwischen dem Client und dem bestimmten Server teilnehmen kann.
-
Die
vorliegende Erfindung stellt des Weiteren ein Rechnerprogramm bereit,
das direkt in den internen Speicher eines digitalen Rechners geladen
werden kann und Teile von Software-Code umfasst, um die Schritte
des vorstehend beschriebenen Verfahrens durchzuführen, wenn das Programm auf
einem Rechner ausgeführt
wird.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Erfindung wird nun lediglich anhand eines Beispiels und mit Bezug
auf die Zeichnungen beschrieben, in denen:
-
1 eine
vereinfachte Darstellung einer bekannten Client-Server-Netzwerkumgebung ist, die ein
Netzwerksicherheitsprotokoll verwendet;
-
2 eine
vereinfachte Darstellung einer Client-Server-Netzwerkumgebung ist, bei der ein zwischengeschalteter
Dritter oder ein Proxy-Server an einer sicheren Sitzung teilnimmt;
-
3 ein ausführliches Flussdiagramm des grundlegenden
Tunnelverfahrens ist;
-
4 ein
vereinfachtes Blockschaltbild der vorliegenden Erfindung ist, in
dem der Proxy-Server den Client ersucht, nachdem dieser anfangs
die Sicherheit auf den Proxy-Server übertragen hat, eine oder mehrere
zusätzliche
sichere Verbindungen herzustellen, indem er über den Proxy-Server zu "n" zusätzlichen
Ursprungs-Servern eine Tunnelverbindung herstellt; und
-
5 ein
Blockschaltbild einer für
das Pervasive Computing ausgelegten Client-Server-Architektur ist,
in der die vorliegende Erfindung eingesetzt werden kann.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
1 stellt
eine herkömmliche
Client-Server-Netzwerkarchitektur
nach dem Stand der Technik dar. In dieser Darstellung tauscht der
Client 10 mit dem Server 12 über ein Netzwerk 14,
bei dem es sich um das Internet, ein Intranet, ein Weitverkehrsnetz, ein
lokales Netz oder dergleichen handeln kann, Daten aus. Der Client 10 und
der Server 12 tauschen Daten unter Verwendung eines Netzwerksicherheitsprotokolls
wie zum Beispiel des Secure-Socket-Layer-(SSL-)Protokolls
von Netscape oder des Transport-Layer-Security-(TLS-)Protokolls
der IETF aus. Allgemein gesagt, ein Client ist eine beliebige Anwendungsinstanz,
die eine TLS- oder eine SSL-Übertragung
zu einem Server einleitet. Ein Server ist eine beliebige Anwendungsinstanz
oder ein Anwendungsprogramm, die/das Verbindungen zur Bedienung
von Anforderungen annimmt, indem er/es Antworten zurücksendet.
Jedes Programm kann sowohl ein Client als auch ein Server sein.
Der hauptsächliche
Unterschied im Betrieb zwischen dem Server und dem Client besteht
darin, dass die Identität des
Servers generell überprüft wird,
während
die Identität
des Client nur optional überprüft wird.
Der Server, auf dem sich eine bestimmte Ressource befindet oder
erzeugt werden soll, wird in diesem Schriftstück zuweilen als Ursprungs-Server
bezeichnet.
-
Der
Client 10 und der Server 12 nehmen an einer sicheren
Sitzung teil. Eine SSL- oder TLS-Sitzung ist eine Beziehung zwischen
einem Client und einem Server, die mittels einem Quittungsprotokoll hergestellt
wird. Sitzungen legen einen Satz von kryptografischen Sicherheitsparametern
fest, die von mehreren Verbindungen gemeinsam benutzt werden können. Sie
werden verwendet, um zu vermeiden, dass für jede Verbindung neue Sicherheitsparameter ausgehandelt
werden müssen,
was aufwändig
ist. Bei SSL oder TLS ist eine Sitzungskennung ein von einem Server
erzeugter Wert, der eine bestimmte Sitzung kennzeichnet. Um eine
SSL- oder eine TLS-Sitzung aufzubauen, nehmen der Client und der
Server einen Quittungsaustausch vor, der eine eingangs vorgenommene
Aushandlung darstellt, bei der die Parameter einer Transaktion zwischen
den Instanzen festgelegt werden. Sobald eine Sitzung aufgebaut ist, finden Übertragungen
zwischen dem Client und dem Server über eine Verbindung statt,
bei der es sich um eine Transportverbindung (gemäß der Definition nach dem OSI-Schichtenmodell)
handelt, die eine geeignete Diensteart bereitstellt. Bei SSL und
TLS sind diese Verbindungen Beziehungen unter Gleichgestellten.
Die Verbindung ist vorübergehend,
und jede Verbindung wird einer Sitzung zugeordnet. Datenübertragungen über die
Verbindung werden üblicherweise
mittels einer Verschlüsselung
mit öffentlichem
Schlüssel
(Public-Key-Verschlüsselung)
gesichert, bei der es sich um eine Klasse von Verschlüsselungsverfahren
handelt, bei denen eine Verschlüsselung
mit zwei Schlüsseln
zur Anwendung kommt. Mit einem öffentlichen
Schlüssel
verschlüsselte Nachrichten
können
nur mit einem zugehörigen
privaten Schlüssel
entschlüsselt
werden. Umgekehrt kann die Echtheit von Nachrichten, die mit dem
privaten Schlüssel
signiert wurden, mit dem öffentlichen Schlüssel geprüft werden.
-
Sobald
die Sitzung aufgebaut ist, verfügt
der Client über
ein Zertifikat, das vom Ursprungs-Server ausgestellt wurde, um die
Identität
des Client gegenüber
dem Ursprungs-Server nachzuweisen. Der Client ersucht den Ursprungs-Server
ebenfalls zur Vorlage eines Zertifikats, so dass er die Echtheit
des Ursprungs-Servers nachweisen kann. Authentifizierung bezeichnet
die Fähigkeit
einer Instanz, die Identität einer
anderen Instanz festzustellen. Als Teil des X.509-Protokolls (auch
als ISO Authentication Framework bekannt) werden Zertifikate üblicherweise von
einer vertrauenswürdigen
Zertifizierungsstelle zugewiesen und sehen eine starke Bindung zwischen
der Identität
(oder einem anderen Attribut) eines Teilnehmers und dessen öffentlichem
Schlüssel vor.
-
Die
vorstehend beschriebene Funktionalität ist in der Technik bekannt.
Die Funktionalität
ist zum Beispiel in Protokollen realisiert, die der TLS-Version 1.0
und der SSL-Version 2.0/3.0 der IETF entsprechen. Diese einander
sehr ähnlichen
Protokolle bestehen aus zwei Schichten: dem Datensatz-Protokoll (record
protocol), das ausschließlich
die Ver- und Entschlüsselung
der übertragenen
Daten durchführt, und
dem Quittungs-(Handshake-)Protokoll. Wie ersichtlich sein wird,
nutzt die vorliegende Erfindung vorteilhaft ein Verfahren, das dazu
dient, diese Arten von Sicherheitsprotokollen zu erweitern, um die
Vertraulichkeit einer Sitzung auf einen zwischengeschalteten Dritten
oder einen Proxy-Server auszuweiten. Vorzugsweise wird die Erfindung
zusammen mit einem Quittungsprotokoll zwischen einem Client und einem
Proxy-Server realisiert, das auf einer sicheren Sitzung aufsetzt,
wie zu sehen sein wird. Diese Erweiterung ändert nicht die grundlegenden
Eigenschaften der sicheren Verbindung auf der Schicht des Datensatz-Protokolls.
Obgleich das Verfahren im Zusammenhang mit TLS und SSL beschrieben
wird, stellt dies keine Einschränkung
der vorliegenden Erfindung dar.
-
Nun
Bezug nehmend auf 2 ermöglicht das grundlegende Verfahren
einem Client 10',
der SSL oder TLS als Sicherheitsprotokoll verwendet, Daten mit einem
oder mehreren Ursprungs-Servern 12' a bis n auszutauschen, um einem
Proxy-Server 15 die
Teilnahme an der Sitzung zu gestatten, ohne die Sicherheitsattribute
der Sitzung zu ändern.
Wie vorstehend erwähnt
wurde, ist dieses Verfahren von der Verschlüsselungsstärke oder den Schritten, die vom
Client 10' und
einem bestimmten Ursprungs-Server 12' zur gegenseitigen Identitätsprüfung durchgeführt werden,
unabhängig.
Die vorliegende Erfindung weist dieselben Vorteile wie TLS/SSL auf,
da sie das Protokoll erweitert, gleichzeitig aber dennoch die Möglichkeit
bietet, Protokolle einer höheren
Ebene darauf aufzusetzen. Zu solchen Protokollen einer höheren Ebene
gehören
zum Beispiel Anwendungsprotokolle (z.B. HTTP, TELNET, FTP und SMTP),
die normalerweise direkt auf der Transportschicht (z.B. der TCP/IP-Schicht)
aufsetzen.
-
3 ist ein Flussdiagramm, das den Betrieb
eines Sicherheitsübertragungsprotokolls
zeigt, das bei der vorliegenden Erfindung von Nutzen ist. Gemäß diesem
Protokoll baut der Client 10' jedes Mal,
wenn er eine Verbindung mit einem bestimmten Ursprungs-Server herstellen
möchte,
zwei (2) getrennte Sitzungen auf. Eine erste sichere Sitzung wird
zwischen dem Client 10' und
dem Proxy-Server 15 aufgebaut, und diese Sitzung dient
als Leitung oder als Kanal zur Übertragung
von geheimen Daten zwischen dem Client und dem Proxy-Server.
-
Die
erste sichere Sitzung ist durch die ersten beiden Spalten des Flussdiagramms
dargestellt. Darüber
hinaus baut der Client 10 auch eine zweite sichere Sitzung
mit dem Proxy-Server auf, wie durch die letzten drei Spalten des
Flussdiagramms gezeigt ist, doch wird der Proxy-Server 15 in
dieser Sitzung verwendet, um eine Tunnelverbindung zum Ursprungs-Server 12' herzustellen.
Ein Tunnel ist ein zwischengeschaltetes Programm, das als ein Blindrelais
zwischen zwei Verbindungen dient. Sobald er aktiv ist, wird ein
Tunnel nicht als ein Teilnehmer an einer bestimmten Übertragung
(z.B. einer HTTP-Anfrage
oder -Antwort) betrachtet, obgleich der Tunnel möglicherweise von dieser Übertragung
gestartet worden ist.
-
In
diesem der Veranschaulichung dienenden Beispiel wird davon ausgegangen,
dass der Client auf einen Ursprungs-Server (der manchmal auch als ein
erster Server bezeichnet wird) zugreifen möchte, um einen bestimmten Inhalt
abzurufen, den Proxy-Server aber zur korrekten Anzeige dieses Inhalts verwenden
will. Die Bedienung der Anforderung kann auch den Abruf von bestimmten
Objekten von einem oder mehreren zusätzlichen Ursprungs-Servern erforderlich
machen. Wie vorstehend erwähnt
wurde, verfügt
der Client gemäß dem SSL/TLS-Protokoll über ein
Zertifikat, das von einem Ursprungs-Server ausgestellt wurde, um
die Identität
des Client gegenüber
dem Ursprungs-Server nachzuweisen, und der Client fordert vom Ursprungs-Server
ebenfalls die Vorlage eines Zertifikats, damit er die Echtheit des Ursprungs-Servers
nachweisen kann. Wie ersichtlich sein wird, verlangt der Client
auch vom Proxy-Server ein Zertifikat, dessen Echtheit vom Client
bestätigt werden
muss, bevor dieser (gegenüber
dem Proxy-Server) ein gemeinsames Sitzungsgeheimnis preisgibt.
-
Die
Routine beginnt im Schritt 20 damit, dass der Client eine
sichere Sitzung mit dem Proxy-Server anfordert. Dies ist die erste
sichere Sitzung, die vorstehend beschrieben wurde. Wie in dem Flussdiagramm
zu sehen ist, muss der Client ein Zertifikat vom Proxy-Server anfordern,
da er gleich seine Sicherheitsattribute übertragen wird. Dies ist die
erste Sitzung, in welcher der Client (dem Proxy-Server) ein mit
einem Ursprungs-Server ausgehandeltes Geheimnis zusammen mit einer
internen Sitzungskennung sendet. Üblicherweise entspricht diese
Kennung nicht der Kennung der SSL/TLS-Sitzung. Sie wird in einem späteren Schritt
ausführlicher
beschrieben.
-
Im
Schritt 22 bestätigt
der Client die Gültigkeit
des vom Proxy-Server empfangenen Zertifikats und ist folglich zufrieden,
dass er eine sichere Sitzung mit dem Proxy-Server hat, Die Routine
schaltet dann zum Schritt 24, in dem der Client eine zweite Verbindung
zum Proxy-Server öffnet.
Dies ist die zweite sichere Sitzung, die vorstehend beschrieben wurde.
Wie erwähnt
wurde, stellt der Client die Anforderung, eine Tunnelübertragung
zu einem bestimmten Ursprungs-Server durchzuführen (zum Beispiel, indem er
das HTTP-CONNECT-Verfahren
für eine Anforderung
verwendet). Als Teil der Tunnelanforderung über den Proxy-Server fügt der Client
einen Kopfbereich zu der HTTP-Anforderung hinzu und teilt dem Proxy-Server damit mit,
dass eine interne Sitzungskennung erzeugt werden soll. Dieser Kopfbereich
bedeutet, dass der Client beabsichtigt, dem Proxy-Server das gemeinsame
Geheimnis zu einem späteren
Zeitpunkt zu senden.
-
Im
Schritt 26 erzeugt der Proxy-Server eine eindeutige interne
Sitzungskennung und sendet diese Information an den Client zurück. Der
Wert der internen Sitzungskennung wird an die sichere HTTP-Antwort
angefügt.
Dies ist der Wert, den der Client verwenden wird, wenn er das gemeinsame
Sitzungsgeheimnis an den Proxy-Server sendet. Im Schritt 28 stellt
der Proxy-Server eine Verbindung mit dem Ursprungs-Server her und ermöglicht den
Datenfluss zwischen dem Client und dem Ursprungs-Server. An diesem
Punkt verhält
sich der Proxy-Server wie ein Tunnel. Er wird erst ein "aktiver Proxy-Server", wenn der Client
das gemeinsame Sitzungsgeheimnis sendet, wie zu sehen sein wird.
Im Schritt 30 führt
der Client einen Quittungsaustausch mit dem Ursprungs-Server durch,
um ein gemeinsames Sitzungsgeheimnis auszuhandeln.
-
Die
Routine schaltet dann zum Schritt 32 weiter. An diesem
Punkt sendet der Client die interne Sitzungskennung zusammen mit
dem gemeinsamen Sitzungsgeheimnis (an den Proxy-Server). Diese Informationen
werden in der ersten Sitzung gesendet, wie gezeigt ist. Im Schritt 34 empfängt der
Proxy-Server die interne Sitzungskennung und das gemeinsame Sitzungsgeheimnis.
Er verwendet diese Informationen, um die notwendige kryptografische
Information zu erzeugen, die zur Entschlüsselung von Antworten des Ursprungs-Servers,
zur Änderung
des übermittelten
Inhalts und/oder zur Verschlüsselung
von Daten, bevor diese an den Client gesendet werden, verwendet
werden soll. Für
die Dauer der aktuellen Verbindung mit dem Ursprungs-Server übernimmt der
Proxy-Server dann die Funktion eines "aktiven Proxy-Server".
-
Im
Schritt 36 sendet der Client eine sichere HTTP-Anforderung
für eine
Ressource an den Ursprungs-Server. Optional kann der Proxy-Server
im Schritt 38 die Anforderung entschlüsseln, nach Bedarf ändern und
die neue Anforderung dann verschlüsseln und an den Ursprungs-Server
senden. Im Schritt 40 erfüllt der Ursprungs-Server die
Anforderung und sendet Antwortdaten an den Proxy-Server zurück. Es sei
angemerkt, dass der Ursprungs-Server
die aktive Teilnahme des Proxy-Server vorzugsweise noch nicht einmal
bemerkt. Im Schritt 42 empfängt der Proxy-Server den Inhalt,
und er entschlüsselt
und ändert
die Daten, um die Transcodierungserfordernisse des Client zu erfüllen. Optional
kann der Proxy-Server im Schritt 44 weitere Verbindungen
mit dem Ursprungs-Server herstellen (wenn der Ursprungs-Server die
Wiederaufnahme einer Sitzung unterstützt), um zusätzliche
Daten abzurufen und/oder die Leistung zu verbessern. Wenn mehrere Verbindungen
hergestellt werden, wird der Schlüssel mittels Verkettung von
Verschlüsselungsblöcken (cipher
block chaining, CBC) angepasst. Wenn der Proxy-Server keine weitere
Verbindung als Teil dieser Sitzung herstellt, muss er den Client über die Änderungen
an den Schlüssel-Angaben
informieren, indem er in der Hauptsitzung eine Benachrichtigung zusammen
mit der Sitzungskennung sendet. Dieser Vorgang ist im Schritt 46 dargestellt,
und er ist notwendig, damit der Client diese Sitzung mit dem Ursprungs-Server zu einem späteren Zeitpunkt
wieder aufnehmen kann.
-
Gemäß der vorliegenden
Erfindung benötigt der
Proxy-Server während
der Verarbeitung einer bestimmten vom Client an den ersten Ursprungs-Server gerichteten
Anforderung möglicherweise
weitere sichere Sitzungen mit anderen Ursprungs-Servern. Wenn der
Proxy-Server also beispielsweise weitere sichere Sitzungen mit anderen
Ursprungs-Servern benötigt,
zum Beispiel, um die aktuelle Anforderung zu transcodieren, sendet
er eine Mitteilung an den Client, in der er den Client ersucht,
mit jedem zusätzlichen
Ursprungs-Server, der benötigt
wird, eine neue Sitzung aufzubauen. Dies ist allgemein im Schritt 48 gezeigt.
Schließlich
verschlüsselt
der Proxy-Server den endgültigen
transcodierten Inhalt und sendet ihn an den Client. Dies ist im
Schritt 50 dargestellt.
-
4 zeigt
ausführlicher,
wie der Proxy-Server eine oder mehrere zusätzliche sichere Sitzungen mit
anderen Ursprungs-Servern
einleitet. In diesem Beispiel arbeitet der Client 10'' mit dem Transcodierungs-Proxy-Server 15'' und dem ersten Ursprungs-Server 12'' in der zuvor beschriebenen Weise
zusammen. Wie in der Figur gezeigt ist, stellt die Sitzung 1 die
erste Sitzung dar, die der Client mit dem Proxy-Server aufbaut,
und die Sitzung 2 ist diejenige Sitzung, in der der Client
die sichere Sitzung mit dem ersten Ursprungs-Server aufbaut. Die
in der Figur dargestellten Schritte (1) bis (12) entsprechen den vorstehend
in dem Flussdiagramm von 3 beschriebenen
Schritten. Wenn der Proxy-Server 15'' während der
beispielhaft veranschaulichten Transcodierungsoperation feststellt,
dass er sichere Daten von einem zweiten Ursprungs-Server 17'' benötigt, bittet der Proxy-Server
den Client 10'', eine zweite Verbindung
mit dem Server 17'' herzustellen,
und zwar indem er wieder eine Tunnelverbindung über den Proxy-Server herstellt.
Dadurch kann der Client ein gemeinsames Geheimnis mit dem zweiten
Server 17'' festlegen.
Das letztere gemeinsame Geheimnis wird zuweilen als das zweite gemeinsame
Geheimnis bezeichnet, um es von dem gemeinsamen Sitzungsgeheimnis
zu unterscheiden, das dadurch erzeugt wurde, dass der Client über den
Proxy-Server eine Tunnelverbindung zum ersten Ursprungs-Server hergestellt
hat. Im Einzelnen stellt der Schritt (13) in 4 dar, wie
der Proxy-Server 15'' die Anforderung an
den Client 10'' stellt. Die
Schritte (3) bis (7) werden dann mit dem zweiten Ursprungs-Server 17'' in der zuvor beschriebenen Weise
wiederholt.
-
Der
Proxy-Server 15'' ist in der
Lage, getrennte gemeinsame Geheimnisse nach Bedarf zu verwalten,
um Übertragungen
zwischen dem Client einerseits und den jeweiligen Ursprungs-Servern andererseits
zu sichern. Folglich verwalten der Client und der Proxy-Server getrennte
gemeinsame Geheimnisse, eines für
jede Sitzung mit einem Ursprungs-Server im Zusammenhang mit der
ursprünglichen
Anforderung des Client. Dadurch kann der Proxy-Server im Namen des
Client auf Daten zugreifen und diese Daten mit mehreren Ursprungs-Servern
verwenden. Auf Wunsch kann der Client das/die gemeinsame(n) Sitzungsgeheimnis(se)
dem Proxy-Server über
dieselbe sichere Sitzung (z.B. die Sitzung 1, wie in 1 gezeigt
ist) oder über
verschiedene sichere Sitzungen zukommen lassen.
-
Wie
zu sehen ist, teilen der Client, ein bestimmter Ursprungs-Server und der Proxy-Server alle
ein gemeinsames Sitzungsgeheimnis. Im Einzelnen wird, sobald sich
der Client und der bestimmte Ursprungs-Server auf ein gemeinsames
Sitzungsgeheimnis verständigt
haben, dieses Geheimnis über eine
sichere Sitzung, die zuvor zwischen dem Client und dem Proxy-Server
aufgebaut worden ist, dem Proxy-Server übermittelt. Anders ausgedrückt, der Client übergibt
(dem Proxy-Server) diesen Hauptsitzungsschlüssel, nachdem er die Hauptsitzung
(d.h. die erste Sitzung) (zwischen dem Client und dem Proxy-Server)
aufgebaut hat. Der Ursprungs-Server braucht jedoch nicht zu merken
(und gewöhnlich merkt
er es auch nicht), dass der Proxy-Server gerade eine Arbeit verrichtet
oder in anderer Weise an der sicheren Verbindung teilnimmt.
-
Wie
zu sehen ist, sind nur geringfügige Änderungen
notwendig, um diese Sicherheitsübertragung
zu unterstützen,
und sie wirken sich nur auf den Client und den Proxy-Server, nicht
aber auf den oder die bestimmten Ursprungs-Server aus, der/die gegebenenfalls
zur Verarbeitung einer bestimmten Anforderung des Client notwendig
ist/sind. Auch braucht der Client bei diesem Verfahren keine Informationen in
Bezug auf seinen privaten Schlüssel
oder in Bezug auf das Verfahren, mit dem die Identität des Client gegenüber dem
Ursprungs-Server nachgewiesen wird, offen zu legen. Da der Client
weitere Verbindungen zu einem Ursprungs-Server herstellen kann, kann
er außerdem
die Verschlüsselungs-Angabe ändern oder
die Sitzung beenden und auf diese Weise die Möglichkeit des Proxy-Server, im Namen
des Client andere Verbindungen zum Ursprungs-Server herzustellen, einschränken.
-
Die
notwendigen Änderungen
lassen sich zusammenfassend wie folgt beschreiben. Der Client muss
in der Lage sein, ein oder mehrere gemeinsame Sitzungsgeheimnisse,
die er mit einem oder mit mehreren einzelnen Ursprungs-Servern ausgehandelt
hat, entgegenzunehmen und diese sicher an den Proxy-Server zu übermitteln.
Der Proxy-Server muss die notwendige Verschlüsselungsinformation aus dem/den
mit dem Server geteilten gemeinsamen Geheimnissen) des Client erstellen
können,
damit er mit seiner Teilnahme an der Sitzung des Client beginnen kann.
Das vorstehend beschriebene Verfahren erfordert keine Änderungen
an dem Quittungsprotokoll, das bei der Aushandlung des Sitzungsgeheimnisses verwendet
wird. Der gesamte Netzwerkverkehr erfährt nur in geringfügigem Maße eine
zusätzliche
Belastung, da nur eine zusätzliche
Sitzung zwischen dem Client und dem Proxy-Server stattfindet, während der
der Client Dienste des Proxy-Server in Anspruch nehmen muss. An
dem/den Ursprungs-Server(n) müssen
keine Änderungen
vorgenommen werden.
-
Die
Hauptsitzung zwischen dem Client und dem Proxy-Server kann als eine
asynchrone Sitzung betrachtet werden, da es für jeden ankommenden Datensatz
eine Sitzungskennung gibt. Vom Client auf dem Proxy-Server vorgenommene
Schreiboperationen können
unabhängig
von Schreiboperationen des Proxy-Server auf dem Client stattfinden,
da keine Bestätigungen
erforderlich sind. Es wird selbstverständlich davon ausgegangen, dass
die darunter liegende Transportschicht ein zuverlässiges Zustellungsverfahren
durchführt.
Bei Anforderungen des Proxy-Server
an den Client für
die Herstellung neuer Verbindungen (zu weiteren Ursprungs-Servern)
wird vorzugsweise eine Sitzungskennung "null*" verwendet, da "eins" zu
einem späteren
Zeitpunkt vom Proxy-Server zugewiesen wird, wenn der Client eine Tunnelübertragung
anfordert. Unter der Voraussetzung, dass der Client gezwungen ist,
den vollständigen
Quittungsaustausch zur Identitätsprüfung durchzuführen, da
er mit dem bestimmten Ursprungs-Server nicht synchron läuft, braucht
der Proxy-Server den Client aus Gründen der Leistungsfähigkeit
nicht über Änderungen
an der Verschlüsselungs-Angabe zu
benachrichtigen. Dies bedeutet für
den Client eine größere Nutzlast
während
des Aufbaus der ersten Sitzung mit einem Ursprungs-Server, verringert
aber das Dialogaufkommen, wenn der Proxy-Server neue Verbindungen
herstellt oder zusätzliche
Anforderungen an den bestimmten Ursprungs-Server oder an einen anderen
Ursprungs-Server sendet.
-
Es
gibt zahlreiche Anwendungen für
den Proxy-Server. Das Folgende sind mehrere repräsentative Beispiele.
-
Eine
solche Verwendungsmöglichkeit
des Proxy-Server besteht in der Verringerung der notwendigen Rechenleistung,
die ein Client benötigt,
um eine Verschlüsselung/Entschlüsselung
durchzuführen.
Wenn sich der Client beispielsweise hinter einer Firewall befindet,
kann der Client bei Verwendung des Proxy-Server die Schritte der
Identitätsprüfung nur
einmal durchführen,
aber dann Daten tatsächlich unverschlüsselt zwischen
ihm und dem Proxy-Server senden und empfangen und auf diese Weise
die Verschlüsselungslast
auf den Proxy-Server verlagern. Alternativ dazu wird der Proxy-Server
verwendet, um einer Firewall-Konfiguration Prüfmöglichkeiten bereitzustellen,
indem er dem Client ermöglicht
(oder vom Client verlangt), das Sitzungsgeheimnis zu übergeben,
bevor die eigentlichen Datensätze
mit dem Ursprungs-Server ausgetauscht werden können. In diesem Fall braucht
der Proxy-Server
den Client nicht zur Übermittlung
von privaten/vertraulichen Informationen über sich selbst oder den Ursprungs-Server
auffordern. In noch einem weiteren Beispiel kann der Proxy-Server
zur Verbesserung der Leistungsfähigkeit
des Client verwendet werden, indem er einem zwischenspeichernden
Proxy-Server die Teilnahme an der Sitzung gestattet, ohne die Sicherheitsmerkmale
der Sitzung zwischen dem Client und dem Ursprungs-Server zu ändern. Alternativ dazu
kann der Proxy-Server zum Vorab-Abruf von Inhalten im Namen des
Client verwendet werden (indem er Sitzungen zu einem späteren Zeitpunkt
wieder aufnimmt), ohne dass der Proxy-Server den privaten Schlüssel des
Client ausdrücklich
kennt. In diesem Fall könnte
der Proxy-Server zum Beispiel außerhalb der Spitzenzeiten regelmäßige Aktualisierungen
der Subskriptionen des Client abrufen. Diese Beispiele dienen lediglich
der Veranschaulichung und sind nicht als Einschränkung des Umfangs dieser Erfindung
zu verstehen.
-
Wie
vorstehend erwähnt
wurde, besteht eine weitere Anwendung der vorliegenden Erfindung
folglich darin, einem Dritten die Teilnahme an einer sicheren Sitzung
unter Einbeziehung einer für
das Pervasive Computing ausgelegten Client-Einheit zu ermöglichen.
Zu repräsentativen
Einheiten gehören
ein Pervasive-Client, der auf einem X86-, PowerPCTM- oder
einem RISC-Rechner beruht, welcher ein Echtzeit-Betriebssystem wie
zum Beispiel WindRiver, VXWorksTM, QSSL
QNXNeutrinoTM oder Microsoft Windows CE
enthält
und einen Web-Browser enthalten kann. Diese Anwendung wird nun nachstehend
ausführlicher
erläutert.
-
Bezug
nehmend auf 5 umfasst eine repräsentative,
für das
Pervasive Computing ausgelegte Einheit das Client-Schichtenmodell (client
stack) 140, das mehrere Komponenten wie zum Beispiel eine
Client-Anwendungsstruktur 142, eine virtuelle Maschine 144,
eine Sprachmaschine 146 und ein im Handel erhältliches
Echtzeit-Betriebssystem (RTOS) 148 enthält. Die Client-Anwendungsstruktur 142 enthält gewöhnlich einen
Browser 150, eine Benutzerschnittstelle 152, eine
Anwendungsklassen-Bibliothek 154 für den Pervasive-Computing-Client, eine standardmäßige Java-Klassenbibliothek 156 und
ein Kommunikationsschichtenmodell (communication stack) 158.
Der Pervasive-Computing-Client ist über einen Verbindungsdienst 162 mit
einer Server-Plattform 160 verbunden.
-
Auf
seiner unteren Ebene enthält
der Verbindungsdienst 162 eine Netzbrücke (Gateway) 164,
die Datenverdichtungs- und Verschlüsselungsfunktionen bereitstellt.
Die Netzbrücke
führt ein
Netzwerksicherheitsprotokoll aus, das entsprechend dem Verfahren der
vorliegenden Erfindung erweitert worden ist. Die obere Ebene des
Verbindungsdiensts 162 ist der Proxy-Server 166,
der eine oder mehrere verschiedene Funktionen wie zum Beispiel Transcodierung,
Filterung, Prioritätsvergabe
und Verbindungsdienste zur Verwaltung der Einheiten bereitstellt.
-
Die
Server-Plattform 160, nämlich
ein bestimmter Ursprungs-Server,
kann unterschiedlichen Typs sein. Die Plattform 160 kann
ein Web-/Anwendungsserver 170 (ein Server von dem Typ mit
synchronem Anforderung-Antwort-Verhalten) oder ein Datensynchronisationsserver 172 (ein
Server vom asynchronen Übertragungstyp
mit Warteschlangen) sein. Die grundlegenden Funktionen eines jeden
solchen Servertyps sind veranschaulicht. Alternativ dazu kann die
Plattform 160 ein Mehrwert-Server 174 sein, der
zusätzliche
Dienste wie LDAP-Verzeichnis-/-Ablage-(Repository-)Dienste,
Beobachtungs- und Benachrichtigungsdienste, Netzwerkverwaltungsdienste,
Gerätelebensdauer-Verwaltungsdienste,
Benutzer- und Einheitenregistrierungsdienste oder Abrechnungsdienste
bereitstellt.
-
Das
Sicherheitsübertragungsprotokoll
bietet zahlreiche Vorteile gegenüber
dem Stand der Technik. Wie vorstehend erörtert wurde, ändert die
Protokollerweiterung nicht die grundlegenden Eigenschaften einer
sicheren Verbindung auf der Ebene des Datensatz-Protokolls. Überdies
ist die Verbindung zum Proxy-Server nichtöffentlich, und zur Datenverschlüsselung
kann ein symmetrisches Verschlüsselungsverfahren
(z.B. DES, RC4 usw.) eingesetzt werden.
-
Die
Schlüssel
für diese
symmetrische Verschlüsselung
werden vorzugsweise für
jede Verbindung einzeln erzeugt und beruhen auf einem Geheimnis,
das von einem anderen Protokoll (wie zum Beispiel das TLS- oder
SSL-Quittungsprotokol) ausgehandelt wird. Außerdem ist die Verbindung zum Proxy-Server
zuverlässig.
Der Nachrichtentransport beinhaltet üblicherweise eine Nachrichtenintegritätsprüfung unter
Verwendung eines verschlüsselten MAC.
Vorzugsweise werden sichere Hash-Funktionen
(z.B. SHA, MD5 usw.) für
MAC-Berechnungen verwendet.
-
Das
Quittungsprotokoll bietet eine Verbindungssicherheit mit mehreren
grundlegenden Eigenschaften. Die Identität des Gleichgestellten kann
mit Hilfe eines asymmetrischen kryptografischen Verfahrens, d.h.
durch Verschlüsselung
mit einem öffentlichen
Schlüssel
(z.B. RSA, DSS usw.), geprüft
und nachgewiesen werden. Diese Identitätsprüfung kann optional erfolgen,
wird aber zumindest für
einen der Gleichgestellten allgemein vorausgesetzt. Darüber hinaus
ist die Aushandlung eines geteilten Geheimnisses sicher. Das ausgehandelte
Geheimnis ist für Durchführer von
Lauschangriffen nicht zugänglich, und
bei einer nach Identitätsprüfung freigegebenen Verbindung
kann auch ein Angreifer, der sich zwischen Absender und Empfänger der Übertragung stellen
kann, nicht in den Besitz des Geheimnisses kommen. Überdies
ist die Aushandlung mit dem Proxy-Server zuverlässig. Kein Angreifer kann die
ausgehandelte Übertragung
verändern,
ohne dass er von den Teilnehmern an der Übertragung erkannt wird.
-
Wie
vorstehend des Weiteren erörtert
wurde, ermöglicht
das Sicherheitsprotokoll einem Proxy-Server die Teilnahme an einer
sicheren Sitzung zwischen einem Client und einer Gruppe von Ursprungs-Servern,
ohne dass die Attribute der Sitzung geändert werden müssen. Das
Verfahren ist auch von der Verschlüsselungsstärke oder den eingesetzten Verfahren
zur Identitätsprüfung unabhängig.
-
Die
Erfindung kann in Software realisiert werden, die in einem Rechner
ausgeführt
werden kann, nämlich
in Form von einem Satz von Befehlen (Programmcode) in einem Code-Modul,
das sich im Direktzugriffspeicher des Rechners befindet. Bis er vom
Rechner benötigt
wird, kann der Befehlssatz in einem anderen Rechnerspeicher, zum
Beispiel auf einem Festplattenlaufwerk oder in einem auswechselbaren
Speicher, gespeichert werden, oder er kann über das Internet oder ein anderes
Rechnernetzwerk heruntergeladen werden.
-
Obgleich
sich die verschiedenen Verfahren, die beschrieben wurden, problemlos
in einem Universalrechner ausführen
lassen, der mittels Software selektiv aktiviert oder neu konfiguriert
werden kann, erkennt der Fachmann auch, dass diese Verfahren ferner
in Hardware, in Firmware oder in einer spezielleren Vorrichtung
durchgeführt
werden können,
welche so aufgebaut ist, dass sie die erforderlichen Verfahrensschritte
ausführt.