-
Technisches Gebiet
-
Die
vorliegende Erfindung betrifft eine Technik eine Server-Vorrichtung
zu veranlassen, als Antwort auf eine Anforderung von einer Client-Vorrichtung
und einer Server-Vorrichtung einen Prozess auszuführen.
-
Stand der Technik
-
In
Xiafeng Wang u. a.: „Defending
Against Denial-of-service
Attacks with Puzzle Auctions",
11. Mai 2003, XP0106399714 wird eine Verteidigung gegen Denial-of-Service-Attacken
mit Puzzle-Auktionen beschrieben. Insbesondere wird ein Mechanismus
angesprochen, der es jedem Client ermöglicht, durch ein Abstimmen
der Schwierigkeit des Puzzle, das er löst, um Ressourcen zu bieten,
und seine Bietstrategie als Antwort auf offenkundige Attacken anzupassen.
In dem Dokument wird eine Analyse angegeben der Effektivität des Auktionsmechanismus
und es wird ferner die Verwendung davon demonstriert, wenn er in
den TCP-Protokollstapel eines Linuxkerns implementiert wird. Der
beschriebene Mechanismus verteidigt gegen SYN-Überflutungsattacken, wenn sie
mit TCP kompatibel sind, und stellt einen Grad an Interoperabilität mit Clients
mit nichtmodifizierten Kernen bereit.
-
In
den letzten Jahren kommt auch eine Vielzahl an Kommunikationsservices
zur Verwendung, die das Internet nutzen. Ein Beispiel eines Kommunikationsprotokolls,
das zum Senden und Empfangen von Daten über das Internet verwendet
wird, ist TCP (Transmission Control Protocol bzw. Übertragungssteuerungsprotokoll).
TCP ist ein Verbindungstyp-Kommunikationsprotokoll, das erlaubt, eine
höchst
zuverlässige
Datenkommunikation über das
Internet auszuführen.
Gemäß dem TCP
tauschen eine Datenübertragungsvorrichtung
(im Folgenden „Servervorrichtung") und eine Datenempfangsvorrichtung
(im Folgenden „Clientvorrichtung") Verbindungsdaten
(im Folgenden „Verbindungs-Identifikator") vor dem Übertragen
von Inhaltsdaten aus. Der ausgetauschte Verbindungs-Identifikator
wird verwendet zum Spezifizieren eines Kommunikationsweges (im Folgenden „Verbindung"), um dadurch eine
Verbindung einzurichten zum Übertragen
von Inhaltsdaten. Beispiele eines Verbindungs-Identifikators enthalten:
eine Kommunikationsadresse, die einer Server-Vorrichtung oder einer Client-Vorrichtung
zugewiesen ist; Daten, die einen Kommunikationsport anzeigen (z.
B. eine Kommunikationsportnummer), der durch die Vorrichtungen verwendet
wird zum jeweiligen Übertragen
und Empfangen von Daten; oder ein anfänglicher Wert einer Sequenznummer.
Gemäß dem TCP
wird eine Verbindung eingerichtet unter Verwendung eines Verfahrens,
das als ein „3-Way-Handshake" bezeichnet wird.
Eine allgemeine Beschreibung dieses Verfahrens folgt.
-
10 stellt
eine Übersicht
eines 3-Way-Handshakes bereit, der durch eine Servervorrichtung 40A und
eine Clientvorrichtung 50A ausgeführt wird. Jede der Vorrichtungen
ist in der Lage gemäß dem TCP
zu kommunizieren. Es wird für
den Zweck dieser Erklärung
angenommen, dass ein Nutzer, der es wünscht, Inhaltsdaten von einer
Servervorrichtung 40A zu erhalten, eine vorbestimmte Arbeitsablauf
durchzuführen,
wie zum Beispiel ein Eingeben von Daten (z. B. eine URL), die eine
Kommunikationsadresse der Servervorrichtung 40A und ein zu
verwendendes Kommunikationsprotokoll zum Erwerben der erwünschten
Inhaltsdaten darstellen. Die Client-Vorrichtung 50A sendet zuerst
an die Server-Vorrichtung 40A eine SYN-Nachricht 200,
wie in 10 gezeigt. Die SYN-Nachricht 200 wird
verwendet zum Anfordern der Einrichtung einer Verbindung, wenn Daten
von einer Server-Vorrichtung 40A zu einer Client-Vorrichtung 50A (im
Folgenden „Abwärtsstrecken-Verbindung") übertragen
werden sollen; und die Nachricht enthält einen Verbindungs-Identifikator
für die
Abwärtsstrecken-Verbindung.
-
Die
Server-Vorrichtung 40A allokiert nach dem Empfang der SYN-Nachricht 200 eine
Computerressource (im Folgenden „Ressource") zum Einrichten einer Verbindung mit
der Quelle der SYN-Nachricht 200, der Client-Vorrichtung 50A.
Speziell schreibt die Server-Vorrichtung 40A in
eine Speicher-Vorrichtung, wie zum Beispiel ein RAM (Random Access
Memory bzw. Speicher mit wahlfreiem Zugriff), und Daten (z. B. einen
Verbindungs-Identifikator
der oben erwähnten
Abwärtsstrecken-Verbindung) zum Identifizieren
einer entsprechenden Vorrichtung (d. h. Client-Vorrichtung 50A).
Die Server-Vorrichtung 40A sendet
dann an die Client-Vorrichtung 50A eine SYN/ACK-Nachricht 210,
die den Empfang der SYN-Nachricht 200 anzeigt,
und sendet auch eine Anforderung zum Einrichten einer Verbindung
in der umgekehrten Richtung (im Folgenden „Aufwärtsstrecken-Verbindung"). Die Aufwärtsstrecken-Verbindung
wird verwendet, wenn Daten von der Client-Vorrichtung 50A an
die Server-Vorrichtung 40A gesendet
werden; und die SYN/ACK-Nachricht 210 enthält einen
Verbindungs-Identifikator für
die Aufwärtsstrecken-Verbindung.
Die Server-Vorrichtung 40 sendet
die SYN/ACK-Nachricht 210 erneut durch ein Bezugnehmen
auf gespeicherte Daten in der Speicher-Vorrichtung, in einem Fall,
in dem eine Nachrichten-Rückmeldung
eines Empfangs der SYN/ACK-Nachricht 210 (im
Folgenden „ACK") innerhalb einer
vorbestimmten Zeit seit der Übertragung
der Nachricht 210 nicht empfangen wird.
-
Die
Client-Vorrichtung 50A liest nach dem Empfang der SYN/ACK-Nachricht 210 den
Verbindungs-Identifikator in der SYN/ACK-Nachricht 210 und
erstellt eine Verbindung (d. h. die Aufwärtsstrecken-Verbindung) gemäß dem Verbindungs-Identifikators.
Die Client-Vorrichtung 50A sendet dann an die Server-Vorrichtung 40A eine
ACK 220, die den Empfang der SYN/ACK-Nachricht anzeigt.
ACK 220 enthält
einen Verbindungs-Identifikator für die Abwärtsstrecken-Verbindung. Nach
dem Empfang der ACK 220 erstellt die Server-Vorrichtung 40A die
Aufwärtsstrecken-Verbindung,
die durch den in der ACK 220 enthaltenen Verbindungs-Identifikator
identifiziert wird, löscht
Daten, die die entsprechende Vorrichtung identifizieren, von der
Speicher-Vorrichtung, und erwartet den Empfang einer Nachricht,
die über die
Abwärtsstrecken-Verbindung
von der Client-Vorrichtung 50A übertragen wird, wie zum Beispiel
eine Anforderung zum Senden von Daten (z. B. eine Nachricht, die
ein HTTP-GET-Verfahren
enthält).
-
Es
wird bemerkt, dass, da Ressourcen der Server-Vorrichtung 40A, wie zum Beispiel
eine Kapazität
einer Speicher-Vorrichtung, begrenzt sind, eine Anzahl von Verbindungs-Identifikatoren
(d. h. Daten, die eine entsprechende Vorrichtung anzeigt, mit der gerade
eine Verbindung wird), die in der Speicher-Vorrichtung gespeichert
werden können,
auch entsprechend limitiert sind. Somit ist eine Anzahl von ACK 220 von
der Client-Vorrichtung 50A,
auf die die Server-Vorrichtung 40A warten kann, auf eine
Anzahl von Verbindungs-Identifikatoren
begrenzt, die in dem Server aufbewahrt werden können. Es ist diese Limitierung,
die einen Server anfällig
macht für
eine Misshandlung. Es kann nämlich
eine Denial-of-Service-Attacke gegen den Server durch eine bösartige Client-Vorrichtung
gestartet werden, durch ein Senden von der Vorrichtung einer großen Anzahl
von SYN-Nachrichten 200 an der Server zum in der Warteschleife
stehen, wobei dadurch die Ressourcen des Servers erschöpft werden.
Eine solche Attacke wird als eine „SYN-Überflutungs-Attacke" bezeichnet.
-
Wenn
eine SYN-Überflutungs-Attacke
gestartet wird, sendet eine bösartige
Client-Vorrichtung, die die Quelle der Attacke ist, kontinuierlich
eine große
Anzahl von SYN-Nachrichten 200 an die Server-Vorrichtung 40A.
Wenn der Server antwortende SYN/ACK-Nachrichten 210 sendet
oder versucht zu senden, ist keine ACK 220 verfügbar von
der Client-Vorrichtung. Der Server bewart darum für eine eingestellte
Zeitspanne Daten auf, die eine entsprechende Vorrichtung identifizieren,
wobei angenommen wird, dass eine Verbindung zwischen der entsprechenden
Vorrichtung noch nicht eingerichtet ist, und erwartet eine ACK 220.
Wenn eine SYN-Überflutungs-Attacke versucht
wird, erreichen eine Anzahl von in dem Server in der Warteschleife
stehenden Verbindungs-Identifikatoren
bald eine obere Grenze. Als ein Ergebnis ist die Server-Vorrichtung
nicht länger
in der Lage, Verbindungsanforderungen von Client-Vorrichtungen zu
akzeptieren; und ein Kommunikationsservice kann nicht bereitgestellt
werden.
-
Verschiedene
Verfahren wurden vorgeschlagen zur Behandlung von SYN-Überflutungs-Attacken.
Diese beinhalten ein Client-Puzzle-Protokoll, das offenbart wurde
durch Ari Juels und John Brainard (RSA Labs) in „Client Puzzles: A Cryptographic Defense
Against Connection Depletion Attacks", (http://www.rsasecurity.com/rsalabs/staff/bios/ajuels/publications/client-puzzles),
und eine Client-Puzzle-Auktion,
die offenbart wurde durch XiaoFeng Wang, Michael K, Reiter in „Defending
Against Denial-of-Service
Attack with Puzzle Auctions",
Proceedings of the 2003 IEEE Symposium an Security and Privacy,
2003 (http://www.cs.cornell.edu/People/egs/ syslunch-spring04/puzzleauctions.pdf).
Im Folgenden wird eine Beschreibung dieser Techniken mit Bezug auf
die angefügten
Figuren angegeben.
-
11 ist
ein Diagramm, das eine Übersicht eines
Client-Puzzle-Protokolls bereitstellt. In der Figur sind eine Server-Vorrichtung 40B und
eine Client-Vorrichtung 50B Kommunikationsvorrichtungen, die
eine Verbindung gemäß dem Client-Puzzle-Protokoll
einrichtet. Die Server-Vorrichtung 40B unterscheidet sich
von der Server-Vorrichtung 40A der 10 darin,
dass die Vorrichtung 40B keine Daten speichert, die eine
Quelle der SYN-Nachricht 100 nach dem Empfang speichert,
und dass die Vorrichtung 40B nach dem Empfang der SYN-Nachricht 100 eine
Nachricht sendet (eine RST/ACK-Nachricht 101 der 11),
die eine Ausführung
einer vorbestimmten Berechnung und eine Antwort mit einem Resultat der
Berechnung anfordert. Die RST/ACK-Nachricht 101 enthält Daten,
die die vorbestimmte Berechnung (im Folgenden „Client-Puzzle") darstellen.
-
Die
Client-Vorrichtung 50B führt nach dem Empfang der RST/ACK-Nachricht 101 eine
Berechnung durch, die durch das Client-Puzzle designiert ist, das
in der RST/ACK-Nachricht 101 enthalten
ist, und sendet eine SYN-Nachricht 102 an
die Server-Vorrichtung 40B nach dem Schreiben eines Berechnungsresultats
in die Nachricht. Im Folgenden wird die Ausführung einer Berechnung, die
durch das Client-Puzzle designiert ist, bezeichnet als „ein Client-Puzzle
zu lösen" und ein Berechnungsresultat
als „eine
Lösung
des Client-Puzzles".
Wenn die Server-Vorrichtung 40B die
SYN-Nachricht 102 empfängt,
bestimmt sie, ob die in der SYN-Nachricht 102 enthaltende
Lösung
korrekt ist; und die Vorrichtung 40B richtet eine Verbindung
zwischen der Client-Vorrichtung 50B gemäß eines Verfahrens ein, das
das gleiche ist, wie das, das in einem 3-Way-Handshake-Verfahren
eingesetzt wird, nur wenn die Lösung bestimmt
wird, korrekt zu sein.
-
Die
Server-Vorrichtung 40B sendet somit ein Client-Puzzle an die Client-Vorrichtung 50B,
die die Einrichtung einer Verbindung angefordert hat, und richtet
keine Verbindung ein, bis die korrekte Lösung des Client-Puzzles von
der Client-Vorrichtung zurückgegeben
wird. Eine Client-Vorrichtung, die eine SYN-Überflutungs-Attacke auf dem
Server 40B durch ein Senden einer großen Anzahl von SYN-Nachrichten
versucht, kann die Attacke nicht länger fortsetzen, außer wenn
sie der Server-Vorrichtung 40B eine korrekte Lösung für ein Client-Puzzle einreicht,
das von dem Server als Antwort auf jede SYN-Nachricht zurückgegeben
wird. Um eine SYN-Überflutungs-Attacke
auf Server 40A fortzusetzen, muss eine Client-Vorrichtung
eine Anzahl von Client-Puzzle lösen,
was bedeutet, dass die Client-Vorrichtung große Ressourcen verfügbar haben muss
zur Berechnung. Folglich ist die Client-Vorrichtung außerstande,
das Senden von SYN-Nachrichten fortzusetzen. Gemäß dem Client-Puzzle-Protokoll kann somit
eine SYN-Überflutungs-Attacke
effektiv behandelt werden.
-
Ein
kritischer Faktor bei der Implementierung des Client-Puzzle-Protokolls
besteht darin, dass ein durch ein Client-Puzzle designierter Berechnungsumfang
geeignet angepasst wird („ein
Berechnungsumfang" wird
im Folgenden bezeichnet als „Client-Puzzle-Schwierigkeit"). In einem Fall,
dass eine Client-Puzzle-Schwierigkeit zu gering eingestellt ist, d.
h. der Berechnungsumfang zu gering ist, ist es für eine Client-Vorrichtung möglich, eine
Lösung
für ein Client-Puzzle
durch Verwenden von relativ wenigen Ressourcen zu erhalten; und
als eine Konsequenz, kann gegen eine SYN-Überflutungs-Attacke nicht verteidigt
werden. Wenn umgekehrt die Client-Puzzle-Schwierigkeit zu hoch ist, d.
h. ein Berechnungsumfang zu hoch ist, würde es sogar für eine legitime Client-Vorrichtung,
die keine SYN-Überflutungs-Attacke versucht,
Zeit dauern, ein Client-Puzzle zu lösen; als Ergebnis wird eine
solche Client-Vorrichtung Schwierigkeiten aufweisen bei der Nutzung
eines Kommunikationsservices, der durch eine Server-Vorrichtung bereitgestellt
wird.
-
In
der Realität
ist es jedoch nicht leicht möglich,
eine geeignete Stufe der Client-Puzzle-Schwierigkeit einzustellen,
die für
jede Client-Vorrichtung in einem existierenden Kommunikationssystem
geeignet ist. Im Allgemeinen wird in einem existierenden Kommunikationssystem
eine Mixtur von verschiedenen Client-Vorrichtungen mit unterschiedlichen
Leistungsfähigkeitsgraden
verwendet, wie zum Beispiel Personalcomputer und PDA (Personal Digital
Assistant bzw. Persönlicher
Digitaler Assistent), aber eine geeignete Stufe der Client-Puzzle-Schwierigkeit hängt von
der Leistungsfähigkeit
von jeder Client-Vorrichtung ab. Die durch Wang u. a. vorgeschlagene
Client-Puzzle-Auktion hat, als seine Aufgabe, eine Lösung für ein solches
Problem bereitgestellt, das in dem Client-Puzzle-Protokoll existiert.
Eine Beschreibung wird nun für
die Client-Puzzle-Auktion
gegeben.
-
12 ist
ein Diagramm zum Beschreiben einer Übersicht der Client-Puzzle-Auktion.
Eine Server-Vorrichtung 40C und eine Client-Vorrichtung 50C sind
Kommunikationsvorrichtungen, die eine Verbindung gemäß der Client-Puzzle-Auktion errichten.
Die Client-Vorrichtung 50C der 12 ist
ausgelegt, entweder erste Daten oder zweite Daten zu senden, wenn
eine SYN-Nachricht 102 (102a oder 102b)
gesendet wird, die eine erhaltene Lösung des Client-Puzzles enthält, wobei
die ersten Daten eine Anforderung ist zum Senden eines Client-Puzzles
mit einer höheren
Schwierigkeit und die zweiten Daten eine Anforderung ist, keine
schwierigeren Client-Puzzles mehr zu senden.
-
Die
Server-Vorrichtung 40C generiert, wenn die ersten Daten
in der SYN-Nachricht 102 enthalten sind, die von der Client-Vorrichtung 50C empfangen wurden,
ein Client-Puzzle
mit einer höheren
Schwierigkeit und sendet eine RST/ACK-Nachricht 101b, die
das generierte Client-Puzzle enthält. In dem Fall, in dem die
SYN-Nachricht 102, die von der Client-Vorrichtung 50C empfangen
wurde, die zweiten Daten enthält,
initiiert die Server-Vorrichtung 40C die Einrichtung einer
Verbindung gemäß einem 3-Way-Handshake.
-
Gemäß der Client-Puzzle-Auktion
gibt die Server-Vorrichtung 40C der 12,
wenn sie SYN-Nachrichten 102 von einer Vielzahl von Client-Vorrichtungen
enthält,
eine höhere
Priorität
zu SYN-Nachrichten 102, die eine Lösung für ein Client-Puzzle mit einer
höheren
Schwierigkeitsstufe enthalten, wenn eine Anforderung bearbeitet
wird und errichtet eine Verbindung bevorzugt mit einer Client-Vorrichtung,
die eine Quelle für
eine solche SYN-Nachricht 102 ist. Da im Allgemeinen große Ressourcen
verbraucht werden zum Lösen
eines Client-Puzzles
mit einer hohen Schwierigkeitsstufe, wird eine Sendefrequenz der
Verbindungseröffnungsanforderungen
reduziert. Eine höhere
Priorität wird
einer Client-Vorrichtung
als Kompensation gegeben, die eine höhere Verarbeitungslast akzeptiert hat
und die in die Lage versetzt wird, Verbindungseinrichtungsanforderungen
weniger oft zu senden. Mit anderen Worten muss die Client-Vorrichtung 50C die Verpflichtung
großer
Ressourcen akzeptieren, wenn sie es wünscht, dass eine Verbindungseröffnungsanforderung,
die sie sendet, durch die Server-Vorrichtung 40C mit einer
höheren
Priorität
verarbeitet wird.
-
Da,
wie oben beschrieben, die Verpflichtung großer Ressourcen ein Hindernis
ist für
eine Client-Vorrichtung, um eine SYN-Überflutungs-Attacke durchzuführen, ermöglicht die
Client-Puzzle-Auktion eine effektive Verteidigung gegen eine SYN-Überflutungs-Attacke.
Da es ferner jeder Client-Vorrichtung 50C ermöglicht wird,
ein Client-Puzzle zu empfangen, das für seine eigene Verarbeitungsfähigkeit
geeignet ist, und das Puzzle zu lösen, ist das oben beschriebene
Problem in dem Client-Puzzle-Protokoll auch
gelöst.
Gemäß der Client-Puzzle-Auktion ist eine
Client-Vorrichtung somit in der Lage eine Last zu tragen, die von
seiner Verarbeitungsfähigkeit
abhängt,
und eine Verbindung wird eingerichtet gemäß einer Priorität, die einer
Last entspricht, die jeder Client-Vorrichtung akzeptiert hat.
-
Wenn
die Client-Puzzle-Auktion verwendet wird, wird die Anzahl von Nachrichten,
die zwischen einer Server-Vorrichtung
und einer Client-Vorrichtung ausgetauscht werden (im Folgenden „Kommunikationsverkehr") dennoch erhöht, verglichen
mit dem konventionellen 3-Way-Handshake
und dem Client-Puzzle-Protokoll, wie es ersichtlich ist von dem, was
in den 10, 11 und 12 gezeigt
wird. Eine solche Erhöhung
des Kommunikationsverkehrs zwischen einer Server-Vorrichtung und
einer Client-Vorrichtung ist nicht begrüßenswert, da es potentiell
ein Faktor wird, der eine Überlastung
in einem Kommunikationsnetzwerk verursacht, durch das eine Kommunikation
zwischen den zwei Vorrichtungen durchgeführt wird.
-
Zusammenfassung der Erfindung
-
Die
vorliegende Erfindung wurde vergegenwärtigt angesichts des oben beschriebenen
Problems und hat als seine Aufgabe die Bereitstellung einer Technik,
die es einer Client-Vorrichtung ermöglicht, eine Last zu tragen, die
von der Verarbeitungsfähigkeit
von jeder Vorrichtung abhängt,
und es der Server-Vorrichtung auch zu ermöglichen, eine Verarbeitungsanforderung
von Client-Vorrichtungen
zu implementieren, die einer Last entsprechen, die jede Client-Vorrichtung
akzeptiert hat zu tragen, während die
Erhöhung
des Kommunikationsverkehrs zwischen einer Client-Vorrichtung und
einer Server-Vorrichtung vermieden wird.
-
Um
das oben angegebene Problem zu lösen stellt
die vorliegende Erfindung, in einem Aspekt, eine Server-Vorrichtung bereit
mit den Merkmalen des Anspruches 1, die umfasst: ein Übertragungsmittel
zum kollektiven Übertragen
an entsprechende Client-Vorrichtungen einer ersten Nachricht mit
einer Vielzahl von Client-Puzzles mit verschiedenen Schwierigkeitsstufen,
wobei jedes der Vielzahl von Client-Puzzles einen Berechnungs-Datensatz
enthält,
und der Berechnungs-Datensatz für
jedes der Client-Puzzles einen unterschiedlichen Berechnungsumfang
entsprechend der verschiedenen Schwierigkeitsstufen erfordert, wobei
die Vielzahl von Client-Puzzles übertragen
werden mit einer Anforderung zur Berechnung zumindest eines Berechnungs-Datensatzes
der Client-Puzzles,
und mit einer Anforderung zum Übertragen
einer Lösung
für zumindest
einen Berechnungs-Datensatz; ein Bestimmungsmittel zum Bestimmen,
wenn eine zweite Nachricht, die das Ausführen eines bestimmten Prozesses
anfordert und die ein Berechnungsergebnis für den zumindest einen Berechnungs-Datensatz enthält, von
jeder der entsprechenden Client-Vorrichtungen empfangen wird, ob
ein empfangenes Berechnungsergebnis korrekt ist; und ein Prozess-Ausführungsmittel
zum Identifizieren, wenn das Bestimmungsmittel bestimmt, dass das
Berechnungsergebnis korrekt ist, eines durch jede der Client-Vorrichtungen
ausgeübten
Berechnungsumfanges für
den zumindest einen Berechnungs-Datensatz, und zum Ausführen des
angeforderten bestimmten Prozesses, das auf der Grundlage des identifizierten
Berechnungsumfanges priorisiert wird.
-
In
einer bevorzugten Ausführungsform
kann das Übertragungsmittel
die erste Nachricht als Antwort auf eine vorläufige Nachricht, die nur die
Ausführung
des bestimmten Prozesses anfordert, an eine Client-Vorrichtung übertragen,
die eine Quelle der vorläufigen
Nachricht ist.
-
In
einer anderen bevorzugten Ausführungsform
wird die erste Nachricht bereitgestellt mit einem vorbestimmten
Bereich, in dem Daten nur enthalten sind, wenn eine Quelle und ein
Ziel der ersten Nachricht eine Kommunikation starten, wobei der
vorbestimmte Bereich Zusatzdaten enthält, die das Ziel der detaillierten
Kommunikationsmoden mitteilen; und das Übertragungsmittel kann die
erste Nachricht übertragen,
die in einem vorbestimmten Bereich die Vielzahl von Client-Puzzle
enthält.
Bevorzugt kann das Übertragungsmittel
die Nachricht gemäß TCP (Transmission
Control Protocol bzw. Übertragungssteuerungsprotokoll) übertragen,
und der vorbestimmte Bereich kann ein Optionsfeld sein.
-
In
einem anderen Aspekt, stellt die vorliegende Erfindung ein Programm
und ein Computer-lesbares Medium zum Speichern eines solchen Programms
bereit, wobei das Programm eine Computer-Vorrichtung veranlasst,
wie die obigen Übertragungsmittel,
Bestimmungsmittel und Prozessausführungsmittel zu funktionieren.
-
In
noch einem anderen Aspekt stellt die vorliegende Erfindung eine
Client-Vorrichtung mit den Merkmalen des Anspruches 5 bereit, die
umfasst: ein Auswahlmittel, wenn eine erste Nachricht, die eine Vielzahl
von Client-Puzzles
mit verschiedenen Schwierigkeitsstufen kollektiv enthält, wobei
jedes der Vielzahl von Client-Puzzles einen Berechnungs-Datensatz
enthält
und der Berechnungs-Datensatz
für jedes
der Client-Puzzle einen unterschiedlichen Berechnungsumfang entsprechend
der unterschiedlichen Schwierigkeitsstufen erfordert, empfangen
wird von einer entsprechenden Server-Vorrichtung mit einer Anforderung zur
Berechnung von zumindest einem Berechnungs-Datensatz der Client-Puzzles,
und mit einer Anforderung zum Übertragen
einer Lösung
des zumindest einen Berechnungs-Datensatzes, zum Auswählen einer
auszuführenden
Berechnung auf der Grundlage des Berechnungsumfanges, nach einem
Identifizieren eines auszuführenden
Berechnungsumfanges für
jede der Berechnungen auf Grundlage jedes Client-Puzzles; und ein Übertragungsmittel zum, wenn
die Server-Vorrichtung angefordert wird, einen bestimmten Prozess
auszuführen, übertragen
einer zweiten Nachricht an die Server-Vorrichtung mit einer Prozess-Ausführungsanforderung,
wobei die zweite Nachricht ein durch die Berechnungs-Ausführungsmittel
(300) erhaltenes Berechnungsergebnis enthält.
-
In
einer bevorzugten Ausführungsform überträgt das Übertragungsmittel,
wenn die Ausführung des
bestimmten Prozesses vor dem Empfang der ersten Nachricht angefordert
wird, eine vorläufige Nachricht
an die Server-vorrichtung mit nur der Prozess-Ausführungsanforderung.
-
In
noch einem anderen Aspekt stellt die vorliegende Erfindung ein Prozess-Ausführungsverfahren
mit den Merkmalen des Anspruches 7 bereit, das umfasst: einen ersten
Schritt zum Übertragen,
von einer Server-Vorrichtung
an eine entsprechende Client-Vorrichtung, einer ersten eine Vielzahl
von Client-Puzzles kollektiv enthaltenden Nachricht mit verschiedenen
Schwierigkeitsstufen, wobei jedes der Vielzahl von Client-Puzzles
einen Berechnungs-Datensatz enthält,
und der Berechnungs-Datensatz für jedes
der Client-Puzzles einen unterschiedlichen Berechnungsumfang entsprechend
der unterschiedlichen Schwierigkeitsstufen erfordert, wobei die
erste Nachricht eine Anforderung zur Berechnung von zumindest einem
Berechnungs-Datensatz der Client-Puzzle enthält, und eine Anforderung zum Übertragen
einer Lösung
für zumindest
einen Berechnungs-Datensatz;
einen zweiten Schritt zum Auswählen,
bei jeder Client-Vorrichtung, die die erste Nachricht erhalten hat,
einer auszuführenden
Berechnung, nach einem Identifizieren eines auszuführenden
Berechnungsumfanges für
jede der Berechnungen auf Grundlage jedes Client-Puzzles, wobei die
Auswahl auf Grundlage eines jeden identifizierten Berechnungsumfanges
erfolgt, zum Ausführen
der ausgewählten
Berechnung und zum Übertragen
einer zweiten Nachricht, die ein Ausführen eines bestimmten Prozesses
an der Server-Vorrichtung anfordert, wobei die zweite Nachricht
ein Ergebnis der ausgeführten
Berechnung enthält;
und einen dritten Prozess zum Bestimmen, an der Server-Vorrichtung, nach
einem Empfang der zweiten Nachricht, ob das Berechnungsergebnis
korrekt ist, und wenn es bestimmt ist korrekt zu sein, zum Identifizieren,
auf Grundlage des Berechnungsergebnisses, eines Berechnungsumfanges,
der durch jede Client-Vorrichtung ausgeführt wird, die eine Quelle der
zweiten Nachricht ist, und zum Ausführen des bestimmten Prozesses
entsprechend einer auf der Grundlage der identifizierten Berechnungsumfanges
bestimmten Priorität.
-
Gemäß einer
solchen Server-Vorrichtung, Client-Vorrichtung und eines Prozess-Ausführungsverfahrens
wird eine Berechnung, die in einem der Client-Puzzles enthalten
ist, das in eine erste Nachricht geschrieben wird, die von der Server-Vorrichtung übertragen
wurde, durch die Client-Vorrichtung ausgeführt, und ein Resultat der Berechnung
wird in eine zweite Nachricht geschrieben, zum Übertragen an die Server-Vorrichtung
mit einer Anforderung zum Ausführen
des bestimmten Prozesses. Die Server-Vorrichtung identifiziert nach
dem Empfang der zweiten Nachricht, wenn das in die zweite Nachricht geschrieben
Berechnungsresultat korrekt ist, einen Berechnungsumfang, der durch
die Client-Vorrichtung
für die
Berechnung durchgeführt
wurde, und führt
den angeforderten bestimmen Prozess aus, der auf der Grundlage des
identifizierten Berechnungsumfangs prioritisiert wurde.
-
Gemäß der vorliegenden
Erfindung werden Client-Vorrichtung
in die Lage versetzt, eine Last zu tragen, die von den Prozessfähigkeiten
von jeder Vorrichtung anhängt,
und die Server-Vorrichtungen werden auch in die Lage versetzt, eine
Prozessanforderung von Client-Vorrichtungen
gemäß der Priorität zu implementieren,
die einer Last entspricht, die jeder Client-Vorrichtung akzeptiert
hat zu tragen.
-
Da
ferner gemäß der vorliegenden
Erfindung eine Vielzahl von Client-Puzzles kollektiv an eine Client-Vorrichtung übertragen
werden, die eine Vielzahl von Berechnungstypen designieren, die
einen unterschiedlichen Berechnungsumfang erfordern, wird keine
Erhöhung
des Kommunikationsverkehrs zwischen einer Client-Vorrichtung und
einer Server-Vorrichtung verursacht.
-
Kurze Beschreibung der Zeichnungen
-
1 ist
ein Diagramm, das ein Beispiel eines Kommunikationssystems mit einer
Server-Vorrichtung 20 und einer Client-Vorrichtung 30 gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung zeigt.
-
2 ist
ein Diagramm, das ein Nachrichtenformat zeigt, das gemäß TCP ausgetauscht
wird.
-
3 ist
ein Diagramm, das ein Beispiel einer Kommunikationssequenz zeigt,
die folgt, wenn eine Verbindung zwischen der Client-Vorrichtung 30 und
der Server-Vorrichtung 20 eingerichtet wird.
-
4 ist
ein Diagramm, das ein Beispiel einer Hardware-Konfiguration der
Server-Vorrichtung 20 zeigt.
-
5 ist
ein Flussdiagramm, das einen Fluss eines Verbindungseinrichtungsprozesses zeigt,
der durch eine Steuereinheit 200 der Server-Vorrichtung 20 gemäß der Software
ausführt.
-
6 ist
ein Diagramm, das ein Beispiel einer Hardware-Konfiguration der
Client-Vorrichtung 30 zeigt.
-
7 ist
ein Flussdiagramm, das einen Fluss eines Verbindungseinrichtungsprozesses zeigt,
der durch eine Steuereinheit 300 der Client-Vorrichtung 30 gemäß der Software
ausführt.
-
8 ist
ein Diagramm, das ein durch die Server-Vorrichtung 20 generiertes
Client-Puzzle beschreibt.
-
9 ist
ein Diagramm, das ein Client-Puzzle gemäß Modifikation 2 beschreibt.
-
3 ist
ein Diagramm, das den konventionellen 3-Way-Handshake beschreibt.
-
11 ist
ein Diagramm, das ein in Juels u. a. offenbartes Client-Puzzle-Protokoll
beschreibt.
-
12 ist
ein Diagramm, das eine in Wang u. a. offenbarte Client-Puzzle-Auktion
beschreibt.
-
Detaillierte Beschreibung
der bevorzugten Ausführungsformen
-
Im
Folgenden wird eine Beschreibung einer bevorzugten Ausführungsform
der vorliegenden Erfindung mit Bezug auf die angefügten Zeichnungen gegeben.
-
A: Konfiguration
-
A-1: Konfiguration eines Kommunikationssystems
-
1 ist
ein Diagramm, das ein Beispiel einer allgemeinen Konfiguration eines
Kommunikationssystems mit einer Server-Vorrichtung 20 und
einer Client-Vorrichtung 30 gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. Wie in 1 gezeigt,
umfasst das Kommunikationssystem ein Kommunikationsnetzwerk 10 wie
zum Beispiel ein Internet, eine Server-Vorrichtung 20 und
eine Client-Vorrichtung 30, die mit dem Kommunikationsnetzwerk 10 verbunden
sind. Während
in 1 nur eine Client-Vorrichtung und eine Server-Vorrichtung gezeigt
sind, die mit dem Kommunikationsnetzwerk 10 verbunden sind,
können
eine Anzahl von Client-Vorrichtungen und/oder eine Anzahl von Server-Vorrichtungen
mit dem Kommunikationsnetzwerk 10 verbunden sein. Im Folgenden
werden eine Client-Vorrichtung
und eine Server-Vorrichtung kollektiv als Kommunikations-Vorrichtung
bezeichnet, wo eine Unterscheidung zwischen den beiden unnötig ist.
-
Wie
in 1 gezeigt umfasst ein Kommunikationsnetzwerk 10 Weiterleitungsvorrichtungen
wie zum Beispiel einen Router, ein Gateway und dergleichen. Das
Kommunikationsnetzwerk 10 liefert die Nachrichten an ihre
Ziele durch ein Routing der Nachricht über die Weiterleitungsvorrichtungen, wenn
eine Nachricht von einer Kommunikationsvorrichtung übertragen
wird, die mit dem Netzwerk gemäß eines
vorbestimmten Protokolls (TCP in der vorliegenden Ausführungsform)
verbunden ist. In der vorliegenden Ausführungsform wird eine Beschreibung
eines Falles angegeben, in dem das Kommunikationsnetzwerk 10 das
Internet ist; aber das Kommunikationsnetzwerk 10 kann auch
ein LAN (Local Area Network bzw. Lokales Netz), ein Mobilpaket-Kommunikationsnetzwerk,
ein drahtloses Kommunikationsnetzwerk, wie zum Beispiel ein drahtloses
LAN, sein, und so weiter.
-
Die
Server-Vorrichtung 20 und die Client-Vorrichtung 30 in 1 sind
mit dem Kommunikationsnetzwerk 10 verbundene Personalcomputer (im
Folgenden „PC"); und sie sind in
der Lage, eine Verbindung einzurichten und gemäß TCP Daten durch das Kommunikationsnetzwerk 10 auszutauschen.
Speziell generieren die Server-Vorrichtung 20 und
die Client-Vorrichtung 30 eine Nachricht mit dem In 2 gezeigten
Format, und übertragen
die Nachricht nach einem Schreiben von vorbestimmten Daten in einen
Bereich des Hader-Anteils der Nachricht, um dadurch zu ermöglichen,
eine Verbindung einzurichten und Daten durch die Verbindung auszutauschen.
-
Das
in 2 gezeigte Format ist das für eine Nachricht, die gemäß TCP übertragen
wird. Obwohl eine detaillierte Darstellung weggelassen wird, ist
ein Steuerflag-Bereich der 2 ein Bereich
zum Schreiben von 6-Bit-Flags: URG, ACK, PSH, RST, SYN und FIN.
Die Server-Vorrichtung 20 und die Client-Vorrichtung 30 setzen
eine „1" oder eine „0" in jede dieser 6-Bit-Flags
vor dem Übertragen
der SYN-, SYN/ACK- und ACK- und RST-Nachrichten.
-
Wenn
eine SYN-Nachricht von der Client-Vorrichtung 30 an die
Server-Vorrichtung 20 übertragen
wird, werden jeweilige Daten in jeden Bereich des Header-Anteils
der Nachricht geschrieben. Und zwar wird in ein Quellenport-Feld eine Kommunikationsportnummer
einer Anwendung (ein Browser etc.) geschrieben, die den Start einer
Kommunikation angefordert hat; in ein Zielport-Feld wird eine Kommunikationsportnummer
einer entsprechenden Anwendung (z. B. HTTPD) geschrieben; und in
ein Sequenznummernfeld wird ein anfänglicher Wert einer Sequenznummer
beschrieben, die durch die Server-Vorrichtung 20 und die Client-Vorrichtung 30 verwendet
wird. In dem Steuerflagfeld wird eine „1" nur für die SYN-Flag gesetzt und
eine „0" wird für andere Flags
gesetzt. Es wird notiert, dass, obwohl es nicht in 2 gezeigt
ist, ein Header ferner einer Nachricht angehängt wird, die zwischen der
Server-Vorrichtung 20 und der Client-Vorrichtung 30 ausgetauscht
wird, wenn die Nachricht auf einem niedrigeren Protokoll-Level als
TCP (z. B. Internet-Protokoll: im Folgenden „IP") verarbeitet wird. In dem in der niedrigeren
Schicht hinzugefügten
Header werden Daten geschrieben, die eine Kommunikationsvorrichtung
darstellen, die ein Ziel und eine Quelle der Nachricht bildet (z.
B. eine Kommunikationsadresse, wie zum Beispiel eine IP-Adresse,
die jeder Vorrichtung zugewiesen ist). Das heißt, dass eine SYN-Nachricht,
die von einer Client-Vorrichtung 30 an eine Server-Vorrichtung 20 übertragen
wurde, einen Verbindungs-Identifikator einer Abwärtsstrecken-Verbindung enthält, die verwendet wird, wenn
Daten von der Server-Vorrichtung 20 zur Client-Vorrichtung 30 übertragen
werden.
-
Die
Server-Vorrichtung 20 und die Client-Vorrichtung 30 der 1 umfassen
beide eine Funktion zum Einrichten einer Verbindung gemäß einer
Kommunikationssequenz (Verweis auf 3), die
sich von dem oben beschriebenen 3-Way-Handshake (Verweis auf 10),
dem Client-Puzzle-Protokoll (Verweis auf 11) oder
der Client-Puzzle-Auktion (Verweis auf 12) unterscheidet.
Im Folgenden wird eine detailliertere Beschreibung der Server-Vorrichtung 20 und
der Client-Vorrichtung 30 angegeben.
-
A-2: Konfiguration der Server-Vorrichtung 20
-
Eine
Beschreibung wird nun für
die Server-Vorrichtung 20 mit Bezug auf 4 angegeben. Wie
in der Figur gezeigt, hat die Server-Vorrichtung 20 eine
Steuereinheit 200, eine Kommunikationsschnittstellen-(im
Folgenden „IF")Einheit 210,
eine Speicher-Vorrichtung 220 und einen Bus 230,
der jede Einheit der Vorrichtung 20 untereinander verbindet.
-
Die
Steuereinheit 200 ist zum Beispiel eine CPU (Central Processing
Unit bzw. Hauptprozessor) und steuert jede Einheit der Server-Vorrichtung 20 durch
das Ausführen
einer in der Speicher-Vorrichtung 220 gespeicherten Software.
Die Kommunikations-If-Einheit 210, die mit dem Kommunikationsnetzwerk 10 verbunden
ist, empfängt
eine über
das Kommunikationsnetzwerk 10 übertragene Nachricht, gibt die
Nachricht an die Steuereinheit 200 weiter, und überträgt eine
Nachricht, die von der Steuereinheit 200 an das Kommunikationsnetzwerk 10 weitergegeben
wurde.
-
Die
Speicher-Vorrichtung 220 umfasst wie in 4 gezeigt
einen flüchtigen
Speicher 220a und eine nichtflüchtige Aufbewahrungseinheit 220b.
Der flüchtige
Speicher 220a ist zum Beispiel ein RAM und wird durch die
Steuereinheit 200, die gemäß der Software arbeitet, als
ein Arbeitsbereich verwendet. Die nichtflüchtige Aufbewahrungseinheit 220b ist
zum Beispiel eine Festplatte, in der eine Vielzahl von Daten gespeichert
ist.
-
Beispiele
der gespeicherten Daten in einer nichtflüchtigen Aufbewahrungsvorrichtung 220b enthalten Übertragungsdaten,
die zu einer Client-Vorrichtung 30 als Antwort auf eine
Anforderung von der Client-Vorrichtung 30 übertragen
werden, und eine Vielzahl von Dateneinheiten (im Folgenden „Server-Geheimnis"), die verwendet
werden, wenn eine Vielzahl von Client-Puzzles mit verschiedenen Schwierigkeitsstufen
generiert werden. In der vorliegenden Ausführungsform wird eine Beschreibung
für den
Fall angegeben, in dem eine Vielzahl von Server-Geheimnissen in
der nichtflüchtigen
Aufbewahrungsvorrichtung 220b gespeichert werden. Alternativ
kann eine Pseudozufallszahl, die gemäß einem vorbestimmten Pseudozufallszahl-Erzeugungsalgorithmus
(z. B. ein M-Sequenz-Verfahren oder ein vermischtes kongruentes
Verfahren) generiert wird, als ein Server-Geheimnis verwendet werden. Darüber hinaus
kann ein Server-Geheimnis generiert werden durch ein Addieren eines
vorbestimmten Wertes zu eine solchen Pseudozufallszahl.
-
Darüber hinaus
wird in der nichtflüchtigen Speicher-Vorrichtung 220b eine
Betriebssystem-(Im Folgenden „OS")Software gespeichert,
die die Steuereinheit 200 veranlasst OS-Funktionen durchzuführen, und
eine Server-Software,
die die Steuereinheit 200 veranlasst, einen Prozess zum
Einrichten einer Verbindung gemäß der in 3 gezeigten
Kommunikationssequenz durchzuführen.
Im Folgenden wird eine Beschreibung von Funktionen angegeben, die durch
die Steuereinheit 200 durch Ausführung der Software bereitgestellt
werden.
-
Wenn
die Server-Vorrichtung 20 angeschaltet wird, läuft die
Steuereinheit 200 zuerst und führt die OS-Software von der
nichtflüchtigen
Aufbewahrungsvorrichtung 220b aus. Der Steuereinheit 200, die
gemäß der OS-Software arbeitet,
wird eine Funktion bereitgestellt zum Steuern jeder Einheit der
Server-Vorrichtung 20 und auch mit einer Funktion zum Abspielen
und Ausführen
anderer Software von der nichtflüchtigen
Speichervorrichtung 220b. Wenn die Steuereinheit 200 die
Ausführung
der OS-Software beendet,
spielt und führt
die Steuereinheit 200, die das OS durchführt, sofort
die obige Server-Software von der nichtflüchtigen Aufbewahrungsvorrichtung durch.
-
Einer
Steuereinheit 200, die gemäß der Server-Software arbeitet,
werden die folgenden drei Funktionen bereitgestellt, wenn sie über die
Kommunikations-IF-Einheit 210 eine
Nachricht empfängt,
die das Einrichten einer Abwärtsstreckenverbindung
von der Client-Vorrichtung
anfordert (3: eine SYN-Nachricht 100),
wobei die Funktionen zum Einrichten einer Abwärtsstreckenverbindung mit der
Client-Vorrichtung 30 gemäß eines in dem Flussdiagramm
der 5 gezeigten Verfahrens sind.
-
Die
erste Funktion, die der Steuereinheit 200 bereitgestellt
wird, die gemäß der Server-Software arbeitet,
ist eine Funktion zum Ausführen
einer Übertragung
(im Folgenden „Übertragungsprozess") einer Nachricht über die
Kommunikations-IF-Einheit 210 an die Client-Vorrichtung 30,
wobei die Nachricht die Ausführung
von einer aus einer Vielzahl von Berechnungen anfordert, die einen
unterschiedlichen Berechnungsumfang erfordern und eine Vorrichtung 30 anfordert,
ein Resultat der Berechnung zu beantworten, wobei die Nachricht
in der vorliegenden Ausführungsform
eine SYN-Nachricht 109 (3)
ist. Die SYN-Nachricht 109 enthält einen Verbindungs-Identifikator,
der eine Aufwärtsstreckenverbindung
zwischen der Client-Vorrichtung 30 designiert,
und somit ist die Nachricht 109 auch zum Anfordern einer
Einrichtung einer Aufwärtsstreckenverbindung
zu der Client-Vorrichtung 30.
-
Genauer
generiert die Steuereinheit 200, gemäß der obigen ersten Funktion,
eine Vielzahl von Client-Puzzles mit verschiedenen Schwierigkeitsstufen
auf Grundlage eines in der SYN-Nachricht 100 enthaltenen
Verbindungs-Identifikators,
der Empfangszeitdaten, die eine Zeit anzeigen, zu der die Nachricht 100 empfangen
wurde, wobei die Zeitdaten durch eine Zeithaltungseinheit (nicht
gezeigt) erhalten werden, und der Vielzahl von Server-Geheimnissen,
und schreibt jedes aus der generierten Vielzahl von Client-Puzzles
in einen bestimmten Bereich (Optionsfeld der 2 in der
vorliegenden Ausführungsform)
der SYN-Nachricht 109 zur Übertragung an die Client-Vorrichtung 30.
-
Wenn
in der vorliegenden Ausführungsform die
Steuereinheit 200 eine SYN-Nachricht 109 überträgt, schreibt
sie in den flüchtigen
Speicher 220a Lösungen
der Vielzahl von Client-Puzzle in Verbindung mit dem Ziel der Nachricht 109.
Die gespeicherten Daten werden durch die Steuereinheit 200 verwendet,
um zu bestimmen, ob eine von jeder Client-Vorrichtung 30 übertragene
Lösung
korrekt ist. In der vorliegenden Ausführungsform wird eine Beschreibung
eines Falles angegeben, in dem ein Client-Puzzle generiert wird
auf Grundlage eines Verbindungs-Identifikators, der Empfangszeitdaten
und Server-Geheimnisse. Alternativ kann zumindest einer von einem
Verbindungs-Identifikator, der Empfangszeitdaten und der Server-Geheimnisse
verwendet werden, wenn ein Client-Puzzle erzeugt wird. Ferner kann
ein Client-Puzzle
erzeugt werden durch die Verwendung zusätzlicher Daten.
-
Das
Optionsfeld in 2 wird aus den folgenden Gründen als
ein bestimmter Bereich zum Schreiben der generierten Vielzahl von
Client-Puzzles verwendet. In den von Juels u. a. und Wang u. a. offenbarten
konventionellen Techniken wird ein Client-Puzzle in jeden Bereich
der Sequenznummer, Urgent-Pointer und Fenstergröße geschrieben. Da jedoch der
gesamte Bereich der drei bereiche so viel wie 64 Bits beträgt (d. h.
8 Byte), kann nur ein Client-Puzzle in eine Nachricht geschrieben
werden. Dies ist ein Grund, warum eine Vielzahl von Nachrichten übertragen
werden müssen,
wie in 12 gezeigt.
-
Im
Gegensatz dazu ist das Optionsfeld ursprünglich zum Schreiben von Daten
(im Folgenden „Zusatzdaten") zum Mitteilen der
Verfügbarkeit
der SACK-Option und der Zeitmarkenoption, und ist in der Lage soviel
wie 40 Bytes zu speichern. Da somit in der vorliegenden Ausführungsform
das Optionsfeld verwendet wird zum Schreiben von Daten eines Client-Puzzles,
können
eine Vielzahl von Client-Puzzles mit unterschiedlichen Schwierigkeitsstufen
in eine SYN-Nachricht 109 geschrieben werden. Entsprechend
kann eine Anforderung zum Ausführen von
einer der Vielzahl von Berechnungen mit einem unterschiedlichen
Berechnungsumfang und einer Anforderung zur Zurückgabe eines Resultats der
Berechnung in einer Nachricht übertragen
werden.
-
In
diesem Fall können
Daten der Vielzahl von Client-Puzzles
anstelle der obigen Zusatzdaten in das Optionsfeld geschrieben werden.
Alternativ kann eine Vielzahl von Client-Puzzles in dem Optionsfeld zusammen
mit den Zusatzdaten aufgenommen werden. In einem Fall, in dem eine
Datengröße einer Vielzahl
von Client-Puzzles und der Zusatzdaten die Speicherkapazität des Optionsfeldes überschreitet, können nur
die Client-Puzzles
in das Optionsfeld aufgenommen werden und die Zusatzdaten können in einem
oder mehreren, der verschiedenen Bereiche des gleichen TCP-Headers
aufgenommen werden, wie zum Beispiel das Urgent-Pointer-Feld, das Fenstergrößenfeld
oder das Sequenzzahlfeld (2). Alternativ
können
die Zusatzdaten bevorzugt in das Optionsfeld geschrieben werden
und eine Vielzahl der Client-Puzzles kann, unter Verwendung des
restlichen Bereichs des Optionsfeldes, in dasselbe Feld geschrieben
werden; wenn in diesem Fall eine Größe des restlichen Bereichs
nicht ausreichend ist, um alle Client-Puzzle unterzubringen, können einige
der Client-Puzzles in unterschiedliche Bereiche des gleichen TCP-Headers
geschrieben werden, wie oben beschrieben.
-
Noch
einmal auf 5 Bezug nehmend, ist die zweite
Funktion, die durch die Steuereinheit 200 bereitgestellt
wird, die gemäß der Server-Software arbeitet,
eine Funktion zum Bestimmen (im Folgenden „Bestimmungs-Prozess"), ob eine Lösung korrekt
ist, die durch Daten eines Berechnungsresultates dargestellt werden,
wenn eine Nachricht über
die Kommunikations-IF-Einheit 210 von der Client-Vorrichtung 30 empfangen
wird, wobei die Nachricht eine Ausführung eines bestimmten Prozesses
anfordert und in ihrem Optionsfeld die Berechnungsresultat-Daten
aufnimmt, die eine Lösung
für eines
der Vielzahl von Client-Puzzles darstellt, wobei die Nachricht in
der vorliegenden Ausführungsform
eine SYN/ACK-Nachricht 110 (3) ist.
Die SYN/ACK-Nachricht 110 ist
eine Nachricht, die einen Empfang der SYN-Nachricht 109 durch
die Client-Vorrichtung 30 zeigt und die Ausführung eines Prozesses
zum Einrichten einer Abwärtsstreckenverbindung
anfordert.
-
Die
dritte Funktion, die mit der Steuereinheit 200 bereitgestellt
wird, die unter der Server-Software arbeitet, ist eine Funktion,
die, wenn es bestimmt wird, dass die Lösung des Client-Puzzles, dass
von der Client-Vorrichtung 30 zurückgegeben
wird, korrekt ist, einen Berechnungsumfang identifiziert, der in der
gleichen Client-Vorrichtung 30 auf Grundlage der Berechnungsresultat-Daten
ausgeführt
wurde, und einen bestimmten Prozess (einen Prozess zum Einrichten
einer Abwärtsstreckenverbindung
in der vorliegenden Ausführungsform)
gemäß der Priorität ausführt, die
dem identifizierten Resultat entspricht.
-
Im
speziellen gibt die Steuereinheit 200 einer Verbindungseinrichtungsanforderung
von einer Client, Vorrichtung eine höhere Priorität, die ein
Client-Puzzle mit einer höheren
Schwierigkeitsstufe gelöst
hat (d. h. eine Client-Vorrichtung, die eine Berechnung mit einem
größeren Umfang
durchgeführt hat).
In der vorliegenden Ausführungsform
wird eine Beschreibung eines Falles angegeben, in dem eine Prozessanforderung
von einer Client-Vorrichtung, die ein schwierigeres Client-Puzzle
gelöst
hat, eine höhere
Priorität
gegeben wird, wenn die Anforderung bearbeitet wird. Alternativ kann
einer Prozessanforderung von einer Client-Vorrichtung, die ein weniger schwierigeres
Client-Puzzle gelöst
hat, eine hohe Priorität
gegeben werden, wenn die Anforderung bearbeitet wird, solang der
Prozess gemäß der Priorität ausgeführt wird,
die von einem Berechnungsumfang abhängt, der in der Client-Vorrichtung
durchgeführt wurde,
die die Quelle der Prozessanforderungen ist.
-
Wie
in dem vorangehenden ist eine Hardware-Konfiguration der Server-Vorrichtung 20 die gleiche
wie die der allgemeinen Computer-Vorrichtung. In der Server-Vorrichtung 20 der
vorliegenden Ausführungsform
läuft eine
Vielzahl von Software, die in der nichtflüchtigen Aufbewahrungs-Vorrichtung 220b gespeichert
ist, und wird durch die Steuereinheit 200 ausgeführt, wobei
die Steuereinheit 200 veranlasst wird, drei Funktionen
durchzuführen,
die speziell für
die Server-Vorrichtung der vorliegenden Erfindung sind. Mit anderen
Worten ist die Server-Software eine Software, die eine Steuereinheit 200 veranlasst,
als Übertragungsmittel
zum Durchführen
des Übertragungsprozesses
zu funktionieren, als Bestimmungsmittel zum Durchführen des
Bestimmungsprozesses und als Prozess-Ausführungsmittel zum Ausführen eines
Prozesses, der durch eine Client-Vorrichtung
gemäß der Priorität angefordert
wurde, die einem Berechnungsumfang entspricht, der durch die Client-Vorrichtung
ausgeführt
wurde.
-
In
der vorliegenden Ausführungsform
wird eine Beschreibung eines Falles gegeben, in dem Funktionen,
die speziell für
die Server-Vorrichtung der vorliegenden Erfindung sind, gemäß einem
Software-Modul realisiert werden. Es ist natürlich möglich, die Server-Vorrichtung 20 zur
Verwendung eines Hardware-Moduls mit denselben Funktionen wie das Software-Modul
zu konfigurieren; d. h. die Server-Vorrichtung 20 kann
durch ein Realisieren des Übertragungsmittels,
des Bestimmungsmittels und des Prozess-Ausführungsmittels unter Verwendung eines
Hardware-Moduls konfiguriert werden, so dass jedes Mittel gemäß eines
in 5 gezeigten Flussdiagramms arbeitet.
-
A-3: Konfiguration der Client-Vorrichtung 30
-
Eine
Beschreibung einer Konfiguration der Client-Vorrichtung 30 mit Bezug auf 6 wird
als Nächstes
angegeben. Wie in 6 gezeigt unterscheidet sich
eine Hardware-Konfiguration der Client-Vorrichtung 30 von
der der Server-Vorrichtung 20 darin, dass in der Client-Vorrichtung 30 eine
Steuereinheit 300, eine Kommunikations-IF-Einheit 310, eine
Speicher-Vorrichtung 320 und ein Bus 330 bereitgestellt
wird. In der Speicher-vorrichtung 320 bereitgestellt sind
ein flüchtiger
Speicher 320a und ein nichtflüchtiger Aufbewahrungsvorrichtung 320b,
anstelle des flüchtigen
Speichers 220a und der nichtflüchtigen Aufbewahrungsvorrichtung 220b.
Die Client-Vorrichtung 30 hat somit die gleiche Konfiguration
wie die einer allgemeinen Computer-Vorrichtung, die Server-Vorrichtung 20 aufweist.
-
In
der nichtflüchtigen
Aufbewahrungsvorrichtung 320b werden Daten und Software
gespeichert, die speziell zur Client-Vorrichtung 30 sind.
Speziell werden Schwellendaten in der nichtflüchtigen Aufbewahrungsvorrichtung 320b gespeichert,
die eine Prozess-Leistungsfähigkeit
der Client-Vorrichtung 30 zeigen, anstelle einer Vielzahl
von Server-Geheimnissen. Die Schwellendaten werden verwendet, wenn
aus einer Vielzahl von Client-Puzzles, die von der Server-Vorrichtung 20 übertragen
wurden, ein Client-Puzzle ausgewählt
wird, das die Client-Vorrichtung 30 lösen wird, allerdings wird eine
detailliertere Beschreibung im Folgenden gegeben. Zusätzlich wird
in der nichtflüchtigen
Aufbewahrungsvorrichtung 320b eine Client-Software gespeichert,
die die Client-Vorrichtung veranlasst, Funktionen zu implementieren,
die speziell zu einer Client-Vorrichtung der vorliegenden Erfindung
sind, anstelle der Server-Software zusätzlich zu der OS-Software. Im Folgenden
wird eine Beschreibung der Funktionen angegeben, die der Steuereinheit 300 durch
Ausführen der
Software bereitgestellt werden.
-
Wenn
die Client-Vorrichtung 30 angeschaltet wird, läuft die
Steuereinheit 300 zuerst und führt die OS-Software von der
nichtflüchtigen
Aufbewahrungsvorrichtung 320b aus. Der Steuereinheit 300, die
gemäß der OS-Software
arbeitet, wird eine Funktion zum Steuern jeder Einheit der Client-Vorrichtung 30 bereitgestellt
und auch eine Funktion zum Ablaufenlassen und Ausführen anderer
Software von der nichtflüchtigen
Aufbewahrungsvorrichtung 320b. Wenn zum Beispiel eine Instruktion
eingegeben wird zum Laufenlassen und Ausführen der Client-Software, lässt die
Steuereinheit 320b die Client-Software von der nichtflüchtigen Aufbewahrungsvorrichtung laufen
und führt
sie aus. Der Steuereinheit 300, die gemäß der Client-Software unter
der Steuerung des OS arbeitet, wird eine Funktion bereitgestellt
zum Einrichten einer Verbindung zwischen der Server-Vorrichtung 20 gemäß des Flussdiagramms
der 7. Im Folgenden wird eine Beschreibung angegeben
von drei Funktionen, die der Steuereinheit 300 gemäß der Client-Software
bereitgestellt werden.
-
Eine
erste Funktion, die der Steuereinheit 300 bereitgestellt
wird, die gemäß der Client-Software
arbeitet, ist, wenn eine Nachricht, die die Ausführung von einer der Vielzahl
von Berechnungen anfordert, die einen unterschiedlichen Berechnungsumfang
erfordern, und die eine Antwort mit einem Resultat der Berechnung
(SYN-Nachricht 109 der 3 in der
vorliegenden Ausführungsform)
anfordert, eine Funktion zum ausführen eines Prozesses zum Identifizieren
eines Berechnungsumfanges, der für
jede der Vielzahl von Berechnungen erforderlich ist und zum auswählen einer
auszuführenden
Berechnung auf Grundlage der identifizierten Resultate (im Folgenden „Auswahlprozess"). Im Speziellen
wählt die Steuereinheit 300,
wenn sie eine SYN-Nachricht 109 von der Server-Vorrichtung 20 empfängt, auf
Grundlage einer Vielzahl von Client-Puzzles, die in der Nachricht 109 enthalten
sind, und der Schwellendaten eine Client-Puzzle aus, das die Client-Vorrichtung 30 lösen wird.
-
Eine
zweite Funktion, die der Steuereinheit 300 bereitgestellt
wird, die gemäß der Client-Software
arbeitet, ist eine Funktion zum Ausführen einer in dem Auswahlprozess
ausgewählten
Berechnung. In der vorliegenden Ausführungsform löst die Steuereinheit 300 ein
Client-Puzzle, das durch den Auswahlprozess ausgewählt wurde,
um eine Lösung
zu erhalten. Eine dritte Funktion ist eine Funktion zum Übertragen
einer Nachricht, die die Ausführung
eines bestimmten Prozesses anfordert, nach dem Schreiben des Berechnungsresultats
(d. h. der Lösung
des Client-Puzzles) in die Nachricht. In der vorliegenden Ausführungsform überträgt die Steuereinheit 300 eine
SYN/ACK-Nachricht 110, die den Empfang der SYN-Nachricht 109 zeigt
und die Einrichtung einer Abwärtsstreckenverbindung
anfordert, nach dem Schreiben der Daten der Berechnungsresultate
in das Optionsfeld (2) der Nachricht 110.
-
Wie
in dem Vorhergehenden wird eine Vielzahl von Software, die in der
nichtflüchtigen
Aufbewahrungsvorrichtung 320b gespeichert ist, durch die Steuereinheit 300 ablaufen
gelassen und ausgeführt, wodurch
die Steuereinheit 300 veranlasst wird, drei Funktionen
zu realisieren, die speziell zu der Client-Vorrichtung der vorliegenden Erfindung
sind. Die Client-Software
ist eine Software, die eine Steuereinheit 300 veranlasst,
als ein Übertragungsmittel
zum Durchführen
des Auswahlprozesses, als ein Berechnungs-Ausführungsmittel
zum Ausführen
einer Berechnung, die durch den Auswahlprozess ausgewählt wurde,
und als ein Antwortmittel zum Übertragen
einer Nachricht, die die Ausführung
eines bestimmten Prozesses anfordert, zu funktionieren, nach dem
Schreiben eines Berechnungsresultats durch das Berechnungs-Ausführungsmittel.
In der vorliegenden Ausführungsform
wird eine Beschreibung für
einen Fall angegeben, in dem Funktionen, die speziell für die Client-Vorrichtung
der vorliegenden Erfindung sind, gemäß einem Software-Modul realisiert
werden. Es ist natürlich
möglich
eine Client-Vorrichtung
unter Verwendung eines Hardware-Moduls zu konfigurieren, das die
gleichen Funktionen wie das Software-Modul aufweist; d. h. eine
Client-Vorrichtung kann durch ein Realisieren des Auswahlmittels
und des Berechnungs-Ausführungsmittel
und des Antwortmittels unter Verwendung eines Hardware-Moduls konfiguriert werden,
so dass jedes Mittel gemäß des in 7 gezeigten Flussdiagramms
arbeitet.
-
B. Betriebsablauf
-
Eine
Beschreibung eines durch die Server-Vorrichtung 20 und
die Client-Vorrichtung 30 durchgeführten Betriebsablaufes wird
als Nächstes angegeben,
insbesondere eines Betriebsablaufes, der, wenn er ausgeführt wird,
die Merkmale der Vorrichtungen 20 und 30 klar
zeigt.
-
Wenn
ein Nutzer einen vorbestimmten Betriebsablauf durchführt, wie
zum Beispiel ein Eingeben einer URL der Server-Vorrichtung 20 mittels
einer Betriebsablaufeinheit (nicht gezeigt), überträgt eine Steuereinheit 300 der
Client-Vorrichtung 30 eine SYN-Nachricht 100 an die Server-Vorrichtung 20,
wie in 3 gezeigt. Im Folgenden wird mit Bezug auf 5 eine
Beschreibung eines Betriebsablaufes angegeben, der durch die Steuereinheit 200 der
Server-Vorrichtung 20 nach dem Empfang der SYN-Nachricht 100 durchgeführt wird.
-
Die
Steuereinheit 200 bestimmt, wenn sie eine Nachricht über die
Kommunikations-IF-Einheit 210 empfängt, wie in 5 gezeigt
(Schritt SA1), auf Grundlage des Inhalts der Nachricht, ob die Nachricht
ein SYN-Nachricht oder eine SYN/ACK-Nachricht ist (Schritt SA2).
Speziell bestimmt die Steuereinheit 200, wenn eine „1" nur für die SYN-Flag
der in der Nachricht enthaltenen Steuer-Flag (2) gesetzt
ist, dass die Nachricht eine SYN-Nachricht
ist; während
sie bestimmt, dass die Nachricht eine SYN/ACK-Nachricht ist, wenn
zusätzlich
zu der SYN-Flag
eine „1" zu der ACK-Flag
gesetzt ist. In einem Fall, in dem die Steuereinheit 200 bestimmt, dass
die empfangene Nachricht eine SYN-Nachricht ist im Schritt SA2,
führt sie
umgekehrt den Prozess des Schrittes SA3 in 5 durch;
während,
wenn die Steuereinheit 200 bestimmt, dass die empfangene Nachricht
eine SYN/ACK-Nachricht
ist im Schritt SA2, sie die Prozesse von Schritt SA5 und nachfolgende
Schritte aus.
-
Da
in dem vorliegenden Beispiel eine SYN-Nachricht 100 von
der Client-Vorrichtung 30 übertragen wird, wird im Schritt
SA2 bestimmt, dass die im Schritt SA1 empfangene Nachricht eine SYN-Nachricht
ist, und der Prozess von SA3 wird durchgeführt. Im Schritt SA3 generiert
die Steuereinheit 200 eine Vielzahl von Client-Puzzles
mit verschiedenen Schwierigkeitsstufen.
-
8 ist
ein Diagramm, das ein Client-Puzzle beschreibt, das durch die Steuereinheit 200 generiert
wurde. Im Schritt SA3 gibt die Steuereinheit 200 zuerst
in eine vorbestimmte Hash-Funktion H einen Verbindungs-Identifikator ein,
der in der SYN-Nachricht 100 enthalten ist, die im Schritt
SA1 empfangen wurde, Empfangszeitdaten, die eine Empfangszeit der
Nachricht 100 zeigen, und eines aus einer Vielzahl von
Server-Geheimnissen,
das in der nichtflüchtigen
Aufbewahrungsvorrichtung 220b gespeichert ist, um ein Hash-Wert
X von L Bits zu erhalten. Die Steuereinheit 200 gibt den
Hash-Wert X anschließend
noch einmal in die Hash-Funktion H ein, um einen Hash-Wert Y von
L Bits zu erhalten. Obwohl in der vorliegenden Erfindung eine Beschreibung
eines Falles angegeben wird, in dem die Hash-Werte X und Y die gleiche
Bitlänge
aufweisen, können
sie unterschiedliche Bitlängen
aufweisen.
-
Die
Steuereinheit 200 generiert dann als ein Client-Puzzle ein Paar von
ersten k Bits (wobei 1 ≤ k < L) des Hash-Wertes
X (im Folgenden „X < 1, k >") und des Hash-Wertes Y. Dieses Client-Puzzle ist eine Berechnung
zum Erhalten von Eingabedaten, von denen der Hash-Wert Y unter Verwendung
der vorbestimmten Hash-Funktion (Hash- Funktion H in der vorliegenden Ausführungsform)
erhalten werden kann, wobei die ersten k Bits der Eingabedaten X < 1, k > entsprechen. Gemäß eines
solchen Client-Puzzles
wird, wenn die Bit-Länge
von X < 1, k > (d. h. k ist näher zu L)
länger
wird, der Berechnungsumfang zum Erhalten einer Lösung des Client-Puzzles (d.
h. X < k + 1, L >) geringer, allerdings
wird eine detaillierte Beschreibung im Folgenden angegeben.
-
Die
Steuereinheit 200 generiert eine Vielzahl von Client-Puzzles
mit einem variierten k-Wert, und generiert dadurch eine Vielzahl
von Client-Puzzles mit unterschiedlichen Schwierigkeitsstufen. Unterschiedliche
Server-Geheimnisse können
auch für
jedes jeweilige Client-Puzzle verwendet werden.
-
In 5 generiert
die Steuereinheit 200 eine SYN-Nachricht 109, die eine Client-Vorrichtung 30 auffordert,
eine Aufwärtsstreckenverbindung
einzurichten, speichert das Ziel der SYN-Nachricht 109 in Verbindung
mit Lösungen
(X < k + 1, L > in der vorliegenden
Ausführungsform)
der Vielzahl von Client-Puzzles, und überträgt eine SYN-Nachricht 109 nach
dem Schreiben der Vielzahl von Client-Puzzles in sein Optionsfeld
(2) (Schritt SA4). Als ein Ergebnis wird, wie in 3 gezeigt,
eine SYN-Nachricht 109 von der Server-Vorrichtung 20 an die Client-Vorrichtung 30 übertragen.
Im Folgenden wird mit Bezug auf 7 eine Beschreibung
eines Betriebsablaufes angegeben, der durch die Steuereinheit 300 der
Client-Vorrichtung 30 durchgeführt wird, wenn eine SYN-Nachricht 109 empfangen
wird.
-
Die
Steuereinheit 300 ließt,
wenn sie eine SYN-Nachricht 109 empfängt (Schritt SB1), von der Nachricht 109 die
Vielzahl von Client-Puzzles und wählt ein zu lösendes Client-Puzzle
(d. h. eine auszuführende
Berechnung) auf Grundlage eines Berechnungsumfanges für jedes
Client- Puzzle und
Schwellendaten, die in der nichtflüchtigen Aufbewahrungsvorrichtung 320b gespeichert
sind (Schritt SB2). In der vorliegenden Ausführungsform zeigt die Datenlänge von
X < 1, k > (d. h. k) einen Schwierigkeitsgrad für jedes
Client-Puzzle an, unter den X < 1,
k > und Y, die in
jeder jeweiligen Vielzahl von Client-Puzzle enthalten sind. Die
Steuereinheit 300 wählt
entsprechend unter den Client-Puzzles, die verschiedene X < 1, k > enthalten, die in
ihrer Bitlänge
einen Wert nicht überschreiten,
der durch die Schwellendaten angezeigt werden, ein Client-Puzzle
aus mit X < 1,
k >, das die längste Bitlänge als
ein zu lösendes
Client-Puzzle aufweist.
-
Die
Steuereinheit 300 führt
dann eine im Schritt SB2 ausgewählte
Berechnung aus und erhält ein
Berechnungsresultat (d. h. eine Lösung eines im Schritt SB2 ausgewählten Client-Puzzles)
(Schritt SB3). Speziell erhält
die Steuereinheit 300 eine Lösung eines Client-Puzzles auf eine
Art und Weise wie folgt. Die Steuereinheit 300 addiert
zuerst einen Bitstring W mit (L-k) Bits, wobei alle der Bits auf
OFF gesetzt werden (d. h. „0"), zu X < 1, k >, der in einem im Schritt
SB2 ausgewählten
Client-Puzzle enthalten ist, zum Eingeben in die vorbestimmte Hash-Funktion
H, und überprüft, ob ein
Ausgabe-Hast-Wert dem Y des Client-Puzzles entspricht.
-
Wenn
diese nicht miteinander übereinstimmen,
schaltet die Steuereinheit 300 jedes Bit des Bitstrings
W eins nach dem anderen auf ON (d. h. „1"), noch einmal zur Eingabe in die Hash-Funktion H,
und wiederholt den Prozess bis ein Ausgabe-Hash-Wert und Y miteinander
zu einer Übereinstimmund
kommen. Wenn sie zu einer Übereinstimmung
kommen, erhält
die Steuereinheit 300 den Bitstring W, der mit dem Y-Wert übereinstimmt,
als eine Lösung
des Client-Puzzles.
-
Die
Steuereinheit 300 generiert dann eine SYN/ACK-Nachricht 110,
die den Empfang der SYN-Nachricht 109 anzeigt und die Einrichtung
der Abwärtsstreckenverbindung
anfordert, schreibt Berechnungsresultat-Daten, die das obige Berechnungsresultat
anzeigen (W in der vorliegenden Ausführungsform), in die Nachricht 110 zum Übertragen an
die Server-Vorrichtung 20 (Schritt S34). Als Ergebnis wird,
wie in 3 gezeigt, eine SYN/ACK-Nachricht 110 von
der Client-Vorrichtung 30 an die Server-Vorrichtung 20 übertragen.
Als Nächstes
wird, wieder auf 5 Bezug nehmend, eine Beschreibung
eines Betriebsablaufes angegeben, der durch die Steuereinheit 200 der
Server-Vorrichtung 20 durchgeführt wird,
wenn die SYN/ACK-Nachricht 110 empfangen
wird.
-
Die
Steuereinheit 200 führt
nach dem Empfang der SYN/ACK-Nachricht 110 durch die Kommunikations-IF-Einheit 210 (Schritt
SA1) die Prozesse bei und nach dem Schritt SA5 wie oben beschrieben durch.
Speziell bestimmt die Steuereinheit 200 zuerst, ob ein
Berechnungsresultat korrekt ist, das durch die Berechnungsresultat-Daten
dargestellt wird, die in dem Optionsfeld der SYN/ACK-Nachricht 110 enthalten
sind, die von der Client-Vorrichtung 30 empfangen wurde.
Speziell überprüft die Steuereinheit 200,
ob die Berechnungsresultat-Daten W mit irgendeinem von X < k + 1, L > übereinstimmen, die in Verbindung
mit der Quelle der SYN/ACK-Nachricht 110 (d. h. das Ziel
der SYN-Nachricht 109)
in dem flüchtigen
Speicher 220a gespeichert sind, und bestimmt, dass das
Berechnungsresultat korrekt ist, wenn es ist.
-
Die
Steuereinheit 200 überträgt, wenn
ein Resultat der Bestimmung des Schrittes SA5 negativ ist, eine
Nachricht, die eine Ablehnung der Anforderung von der Client- Vorrichtung 30 anzeigt
(z. B. eine RST-Nachricht) (Schritt SA8), und beendet die Routine.
Wenn umgekehrt ein Resultat der Bestimmung des Schrittes SA5 zustimmend
ist, identifiziert die Steuereinheit 300 auf Grundlage
der Berechnungsresultat-Daten einen Berechnungsumfang, der durch die
Client-Vorrichtung ausgeführt
wurde (Schritt SA6). In der vorliegenden Ausführungsform identifiziert die
Steuereinheit 200 den Berechnungsumfang in Übereinstimmung
mit der Bitlänge
der Berechnungsresultat-Daten W. In der vorliegenden Erfindung wird
identifiziert, dass, je länger
die Bitlänge
der Berechnungsresultat-Daten ist, umso größer der Berechnungsumfang ist,
der durch die Client-Vorrichtung
durchgeführt
wird.
-
Die
Steuereinheit 200 richtet dann eine Abwärtsstreckenverbindung in Übereinstimmung
mit einer abnehmenden Reihenfolge des Berechnungsumfangs ein, der
im Schritt SA6 identifiziert wurde, auf Grundlage eines in der SYN/ACK-Nachricht
enthaltenen Verbindungs-Identifikators,
die im Schritt SA1 empfangen wurde (Schritt SA7). Anschließend überträgt die Steuereinheit 200,
nachdem der Schritt SA7 beendet ist, eine ACK 120, die
den Empfang der SYN/ACK-Nachricht und den Abschluss der Einrichtung
der Abwärtsstrecken-Verbindung
anzeigt, und beendet dann die Routine. Als ein Ergebnis wird, wie in 3 gezeigt,
eine ACK 120 von der Server-Vorrichtung 20 an die Client-Vorrichtung übertragen.
-
Die
Steuereinheit 300 der Client-Vorrichtung 30 ließt nach
dem Empfang der ACK 120 von der ACK 120 einen
Verbindungs-Identifikator, der ein Aufwärtsstrecken-Verbindung anzeigt, um die Aufwärtsstrecken-Verbindung
auf Grundlage des Verbindungs-Identifikators einzurichten. Somit
werden Aufwärtsstrecken-
und Abwärtsstrecken-Verbindungen zwischen
der Server-Vorrichtung 20 und
der Client-Vorrichtung eingerichtet.
-
Wie
in dem Vorhergehenden wird gemäß der vorliegenden
Ausführungsform
eine Verbindung zwischen der Server-Vorrichtung 20 und der Client-Vorrichtung 30 eingerichtet,
gemäß einer
Prioritätsbasis, die
einem Berechnungsumfang entspricht, der an der Client-Vorrichtung 30 durchgeführt wurde.
Als ein Effekt ist eine Client-Vorrichtung gefordert, die eine SYN-Überflutungs-Attacke eingerichtet
hat, durch ein Übertragen
einer großen
Anzahl von SYN-Nachrichten an die Server-Vorrichtung 20 der
vorliegenden Erfindung, so viele Client-Puzzles zu lösen, wie
die Anzahl von übertragenen
SYN-Nachrichten. Die Client-Vorrichtung muss dann viele Ressourcen
zum Lösen
der Client-Puzzles verpflichten, wodurch es für die Client-Vorrichtung schwierig
wird, in einer kurzen Zeitspanne, eine SYN/ACK-Nachricht 110 zurückzugeben,
als Antwort auf eine SYN-Nachricht 109, die von der Server-Vorrichtung 20 übertragen
wurde. Da keine Abwärtsstrecken-Verbindung
bei der Server-Vorrichtung 20 eingerichtet wird, wenn keine SYN/ACK-Nachricht 110 zurückgegeben
wird, kann gegen die SYN-Überflutungs-Attacke
verteidigt werden.
-
Eine
Client-Vorrichtung, die eine SYN-Überflutungs-Attacke versucht, könnte eine SYN/ACK-Nachricht übertragen,
ohne tatsächlich
ein Client-Puzzle zu lösen,
sondern durch ein ledigliches Schreiben eines Zufallswertes in die
Nachricht als Lösung
für das
Client-Puzzle; die Wahrscheinlichkeit, dass eine solche Zufallszahl
zusammenfällt
mit einer Übereinstimmung
mit einer korrekten Lösung
des Client-Puzzles ist jedoch extrem gering, und darum wird eine
Anforderung zum Einrichten einer Abwärtsstrecken-Verbindung durch
die Server-Vorrichtung 20 abgelehnt werden. Eine Client-Vorrichtung könnte auch
eine SYN/ACK-Nachricht übertragen
durch ein Lösen
des leichtesten Client-Puzzles
unter einer Vielzahl von Client-Puzzles, die von der Server-Vorrichtung 20 übertragen
wurden. Da jedoch eine Verbindungseinrichtungs-Anforderung mit einer
Lösung
für das
leichteste Client-Puzzle mit der niedrigsten Priorität bearbeitet
wird, wird die Verbindung nicht immer eingerichtet. Somit kann gemäß der vorliegenden Ausführungsform
eine SYN-Überflutungs-Attacke ohne Fehler
verteidigt werden.
-
Ferner
wird gemäß der vorliegenden
Ausführungsform
eine Vielzahl von Client-Puzzles, wobei jedes eine unterschiedliche
Schwierigkeitsstufe aufweist, kollektiv an die Client-Vorrichtung 30 in
einer Nachricht übertragen.
Darum kann ein Anstieg im Kommunikationsverkehr zwischen Client-Vorrichtung 30 und
Server-Vorrichtung 30 vermieden werden.
-
C: Modifizierung
-
In
dem Vorhergehenden wurde eine Beschreibung einer bevorzugten Ausführungsform
der vorliegenden Erfindung angegeben. Modifikationen können jedoch
gemacht werden, wie im Folgenden beschrieben.
-
C-1: Modifikation 1
-
In
der obigen Ausführungsform
wird eine Beschreibung eines Falles angegeben, in dem eine Server-Vorrichtung 20 und
eine Client-Vorrichtung 30 PCs sind, die gemäß TCP kommunizieren.
Alternativ kann die Server-Vorrichtung 20 und/oder
die Client-Vorrichtung 30 ein PDA sein oder ein Mobiltelefon,
die gemäß TCP kommunizieren.
Jegliche Computervorrichtung kann verwendet werden, so lang sie gemäß TCP kommuniziert.
Ferner wird eine Beschreibung in der obigen Ausführungsform angegeben, in der
die Server-Vorrichtung 20 und die Client-Vorrichtung 30 gemäß TCP kommunizieren, aber es
sollte ersichtlich sein, dass jegliches anderes Kommunikationsprotokoll
verwendet werden kann.
-
C-2: Modifikation 2
-
In
der Obigen Ausführungsform
wird eine Beschreibung für
einen Fall angegeben, in dem Lösungen
für Client-Puzzles,
die in eine SYN-Nachricht 109 geschrieben sind, in Verbindung
mit dem Ziel der SYN-Nachricht 109 in der Server-Vorrichtung 20 gespeichert
werden. Alternativ können
Client-Puzzles, wie in dem Folgenden, verwendet werden, wobei in diesem
Fall Lösungen
für die
Client-Puzzles nicht
in der Server-Vorrichtung 20 gespeichert werden müssen.
-
9 ist
ein Diagramm zum Beschreiben eines Client-Puzzles gemäß der vorliegenden Modifizierung.
Wie in der Figur gezeigt ist, gemäß dem Client-Puzzle, ein Hash-Wert Ns ein Wert,
der erhalten wird durch ein Eingeben in eine vorbestimmte Hash-Funktion
H eines Server-Geheimnisses,
der Empfangszeitdaten, die eine Zeit anzeigen, zu der die SYN-Nachricht 100 empfangen
wurde, und einer Quellenadresse (d. h. eine IP-Adresse der Client-Vorrichtung 30).
Ein Hash-Wert wird dann erhalten durch ein Eingeben in eine Hash-Funktion
des Hash-Wertes Ns, einer Zieladresse (eine IP-Adresse der Server-Vorrichtung 20),
Quellen- und Zielportnummern, eines anfänglichen Wertes einer Sequenznummer
und eines bestimmten Parameters Z, wobei alle Bits in einer vorbestimmten
Bitlänge
eines ersten Anteils des Hash-Wertes
zu „0" gesetzt wird. Ein Paar
des Hash-Wertes Ns und die vorbestimmte Bitlänge werden an die Client-Vorrichtung 30 übertragen,
wenn dieser Client-Puzzle-Typ verwendet wird; und eine Lösung des
Client-Puzzles ist der Parameter Z. In dem Client-Puzzle zeigt die
vorbestimmte Bitlänge
die Schwierigkeit des Client- Puzzles;
wie die Bitlänge,
wird die Schwierigkeitsstufe höher.
-
Wenn
das Client-Puzzle der 9 verwendet wird, muss die Server-Vorrichtung 20 nur
Daten, als ein Client-Puzzle,
die den Hash-Wert Ns und die vorbestimmte Bitlänge anzeigen, an die Client-Vorrichtung 30 übertragen.
Wenn eine Lösung
Z des Client-Puzzles von der Client-Vorrichtung 30 übertragen wird,
wird eine in 9 angezeigte Berechnung ausgeführt, um
zu bestimmen, ob die übertragene
Lösung
korrekt ist. Wenn somit ein Client-Puzzle der 9 verwendet
wird, muss die Server-Vorrichtung 20 keine Berechnung im
Voraus ausführen,
um seine Lösung
zur Aufbewahrung zu erhalten, sondern muss nur Daten speichern,
die den Hash-Wert Ns und die vorbestimmte Bitlänge anzeigen, die an die Client-Vorrichtung 30 übertragen
wurden, in Verbindung mit einer Kommunikationsadresse der Vorrichtung 30,
um zu bestimmen, ob eine von der Client-Vorrichtung 30 übertragene
Lösung
korrekt ist. Auf diese Art und Weise kann, da vor der Übertragung
der SYN-Nachricht 109 keine Berechnung zum Generieren eines
Client-Puzzles durchgeführt
werden muss, eine Nachricht 109 umgehend an die Client-Vorrichtung 30 übertragen
werden.
-
Ferner
ist eine Berechnung für
ein Client-Puzzle nicht auf die Berechnung unter Verwendung einer
Hash-Funktion beschränkt,
sondern kann eine Berechnung sein zum Erhalten einer Lösung für eine algebraische
Gleichung, wie zum Beispiel eine n (n ≥ 3)-Grad Gleichung und ein System
linearer Gleichungen. In diesem Fall können Daten, die eine n-Grad
Gleichung oder eine simultane Gleichung (z. B. in dem Fall, dass
eine algebraische Gleichung einer kubischen Gleichung aX3 + bX2 + cX + d
= 0 verwendet wird, die Koeffizienten a, b, c und d) zeigen, als
ein Client-Puzzle
verwendet werden, wobei eine Anzahl von in der algebraischen Gleichung
verwendeten Koeffizienten einem Berechnungsumfang entspricht.
-
C-3: Modifikation 3:
-
In
der obigen Ausführungsform
wurde eine Beschreibung eines Falles angegeben, in dem eine Client-Vorrichtung
veranlasst wird, eines aus einer Vielzahl von Client-Puzzles zu lösen, die
von einer Client-Vorrichtung übertragen
wurden, aber eine Client-Vorrichtung kann veranlasst werden, mehr
als ein Client-Puzzle zu lösen,
wobei in diesem Fall alle Lösungen
in der SYN/ACK-Nachricht 110 enthalten sein
können.
Wenn eine Server-Vorrichtung
eine SYN/ACK-Nachricht 110 mit einer Vielzahl von Lösungen empfängt, kann
die Vorrichtung einen Berechnungsumfang identifizieren, der durch
die Client-Vorrichtung ausgeführt
wurde, auf Grundlage einer der Lösungen
(z. B. eine Lösung
des schwierigsten oder leichtesten Client-Puzzles) oder der Vielzahl von
Lösungen.
Zum Beispiel kann eine Server-Vorrichtung einen Berechnungsumfang
identifizieren, der durch eine Client-Vorrichtung durchgeführt wurde,
durch ein Summieren des Berechnungsumfanges, der für die Client-Puzzles durchgeführt wurde, die
den jeweiligen Lösungen
entsprechen.
-
C-4: Modifikation 4
-
Wenn
in der obigen Ausführungsform
eine Anforderung zum Einrichten einer Verbindung von einer Client-Vorrichtung übertragen
wird, richtet eine Server-Vorrichtung eine Verbindung ein auf Grundlage
einer Priorität,
die von einer Schwierigkeitsstufe eines Client-Puzzles abhängt, das
durch die Client-Vorrichtung zu lösen ist. Ein Prozess, der durch eine
Server-Vorrichtung als Antwort auf eine Anforderung von einer Client-Vorrichtung
durchgeführt wird,
ist jedoch nicht auf einen Verbindungseinrichtungs-Prozess beschränkt, sondern
kann ein Prozess sein zum Generieren von Daten gemäß eines vorbestimmten
Algorithmus, zum Speichern der Daten (z. B. in einer Datenbank)
oder zum Weiterleiten der Daten an ein bestimmtes Ziel. Es kann
ein Prozess sein zum Übertragen
von bestimmten Daten an eine Client-Vorrichtung als Antwort auf eine Anforderung
von der Client-Vorrichtung.
-
Während die
vorliegende Erfindung angewendet wird auf eine Server-Vorrichtung,
die einen solchen Prozess zum Generieren von Daten gemäß eines
vorbestimmten Algorithmus durchführt,
kann die Server-Vorrichtung, in der Mitte der Ausführung eines
Prozesses für
eine Client-Vorrichtung, eine andere Anforderung von einer anderen
Client-Vorrichtung erhalten, die eine Berechnung durchgeführt hat, dessen
Umfang größer ist
als der einer Berechnung, die durch die Client-Vorrichtung durchgeführt wurde, für die die
Server-Vorrichtung gegenwärtig
den Prozess ausführt.
In einem solchen Fall kann eine Prioritätsanordnung des gegenwärtig ausgeführten Prozesses
unter Verwendung eines Systemaufrufes verringert werden (z. B. ein
Systemaufruf gemäß Unix®), so
dass die andere Anforderung bevorzugt ausgeführt werden kann. Ferner kann
in der vorliegenden Modifizierung eine RST-Nachricht anstelle einer SYN-Nachricht 109 verwendet
werden zum Übertragen
einer Vielzahl von Client-Puzzles.
-
Somit
kann gemäß der vorliegenden
Modifizierung eine Technik der vorliegenden Erfindung nicht nur
zur Verteidigung gegen SYN-Überflutungs-Attacken
verwendet werden, sondern auch eine Server-Vorrichtung, die einen
bestimmten Prozess als Antwort auf eine Anforderung von einer Client-Vorrichtung,
zu veranlassen, den Prozess gemäß einer
Priorität
auszuführen,
die auf einer last basiert, die die Client-Vorrichtung tragen muss.
-
C-5: Modifikation 5
-
In
der obigen Ausführungsform
wurde eine Beschreibung für
einen Fall angegeben, in dem eine SYN-Nachricht, die die Einrichtung
einer Verbindung anfordert, zuerst an eine Server-Vorrichtung übertragen
wird, und dann die Server-Vorrichtung veranlasst wird, eine Vielzahl
von Client-Puzzles mit verschiedenen Schwierigkeitsstufen kollektiv
an die Client-Vorrichtung zu übertragen.
Alternativ kann eine Server-Vorrichtung, nach der Einrichtung von
Verbindungen mit einer Vielzahl von Client-Vorrichtungen, zuerst
veranlasst werden, eine Vielzahl von Client-Puzzles an jede Client-Vorrichtung
zu übertragen,
bevor eine Prozessanforderung von jeder Client-Vorrichtung empfangen
wird. Ein Prozess kann durch eine Server-Vorrichtung nur durchgeführt werden,
wenn eine Anforderung für
den Prozess mit einer Client-Puzzle-Lösung übertragen
wird. Gemäß der vorliegenden
Modifikation ist eine Server-Vorrichtung in der Lage, die Frequenz
von Prozessanforderungen zu steuern, die von einer Client-Vorrichtung
empfangen werden, wodurch eine mögliche Überlastung vermieden
werden kann, bevor sie passiert.
-
Umgekehrt
ist eine solche Modifikation in den offenbarten Techniken im Stand
der Technik, Juels u. a. und Wang u. a., nicht möglich, da ein Client-Puzzle
in den Sequenznummer-, Urgent-Pointer-, und Fenstergrößenbereich
eines TCP-Headers geschrieben wird, da die Verwendung dieser Bereiche
eines TCP-Headers nicht zweckentfremdet werden soll zum Schreiben
eines Client-Puzzles, nachdem eine Verbindung eingerichtet ist,
da Daten, die in der Sequenznummer und dem Urgent-Pointer enthalten
sind, jedes mal aktualisiert werden, wenn Daten zwischen einer Server-Vorrichtung
und einer Client-Vorrichtung über
die eingerichtete Verbindung aktualisiert werden. Das TCP-Optionsfeld
kann auf der anderen Seite verwendet werden zum Schreiben eines
Client-Puzzles, sogar nachdem die Verbindung eingerichtet ist, da
dieser Bereich verwendet wird zum Schreiben der oben beschriebenen
Zusatzdaten, wobei diese Daten sind zum Mitteilen einer Verfügbarkeit
einer SACK-Option und einer Zeitmarkenoption bevor eine Verbindung
eingerichtet ist, und somit könnte
eine Verwendung des TCP-Optionsfeldes zum Schreiben von Client-Puzzles
weniger Probleme veranlassen.
-
C-6: Modifikation 6
-
In
der obigen Ausführungsform
wird Software im Voraus in einer nichtflüchtigen Aufbewahrungsvorrichtung 220b gespeichert,
um eine Steuereinheit zu veranlassen, Funktionen zu realisieren,
die speziell zu der Server-Vorrichtung
der vorliegenden Erfindung ist. Zum Speichern der Software kann
ein anderes Computerlesbares Medium, wie zum Beispiel eine CD-ROM
(Compact Disk Read Only Memory), eine DVD (Digital Versatile Disk)
und dergleichen verwendet werden, und die Software kann in einer
allgemeinen Computer-Vorrichtung unter Verwendung solcher Medien
installiert werden. Auf diese Art und Weise ist es möglich eine
Server-Vorrichtung in einem existierenden Kommunikationssystem zu
veranlassen, als eine Server-Vorrichtung gemäß der vorliegenden Erfindung
zu funktionieren. Gleichermaßen kann
eine Software, die eine Steuereinheit veranlasst, Funktionen zu
realisieren, die speziell zu der Client-Vorrichtung der vorliegenden
Erfindung sind, in einem Aufnahmemedium wie den obigen gespeichert
werden, und die Software kann in einer allgemeinen Computer-Vorrichtung
unter Verwendung solcher Medien installiert werden.