DE602005005753T2 - Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem - Google Patents

Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem Download PDF

Info

Publication number
DE602005005753T2
DE602005005753T2 DE602005005753T DE602005005753T DE602005005753T2 DE 602005005753 T2 DE602005005753 T2 DE 602005005753T2 DE 602005005753 T DE602005005753 T DE 602005005753T DE 602005005753 T DE602005005753 T DE 602005005753T DE 602005005753 T2 DE602005005753 T2 DE 602005005753T2
Authority
DE
Germany
Prior art keywords
client
message
calculation
server device
puzzles
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602005005753T
Other languages
English (en)
Other versions
DE602005005753D1 (de
Inventor
Motoharu Miyake
Tomohiro Nakagawa
Hiroshi Inamura
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Docomo Inc filed Critical NTT Docomo Inc
Publication of DE602005005753D1 publication Critical patent/DE602005005753D1/de
Application granted granted Critical
Publication of DE602005005753T2 publication Critical patent/DE602005005753T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

  • 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.

Claims (7)

  1. Server-Vorrichtung (20), umfassend: ein Übertragungsmittel (210), das ausgelegt ist, eine erste Nachricht mit einer Vielzahl von Client-Puzzles mit verschiedenen Schwierigkeitsstufen kollektiv an entsprechende Client-Vorrichtungen zu übertragen, 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 (200), das ausgelegt ist 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 (200), das ausgelegt ist 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.
  2. Server-Vorrichtung nach Anspruch 1, wobei das Übertragungsmittel (210) ausgelegt ist, die erste Nachricht als Antwort auf eine vorläufige, nur die Ausführung des bestimmten Prozesses anfordernde Nachricht an eine Client-Vorrichtung zu übertragen, die eine Quelle der vorläufigen Nachricht ist.
  3. Server-Vorrichtung nach Anspruch 1, wobei die erste Nachricht mit einem vorbestimmten Gebiet bereitgestellt wird, in dem Daten nur aufgenommen werden, wenn eine Quelle und ein Ziel der ersten Nachricht eine Kommunikation beginnen, wobei das vorbestimmte Gebiet Nachtragsdaten zum Benachrichtigen des Zieles über detaillierte Kommunikationsmoden enthalten; und wobei das Übertragungsmittel (210) ausgelegt ist, die erste Nachricht mit der Vielzahl von Client-Puzzles in dem vorbestimmten Gebiet zu übertragen.
  4. Server-Vorrichtung nach Anspruch 3, wobei das Übertragungsmittel (210) ausgelegt ist, die erste Nachricht entsprechend des TCP, Transmission Control Protocol, zu übertragen; und wobei das vorbestimmte Gebiet ein Optionsfeld ist.
  5. Client-Vorrichtung (30), umfassend: ein Auswahlmittel (300), das ausgelegt ist, 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 (310), das ausgelegt ist, wenn die Server-Vorrichtung angefordert wird, einen bestimmten Prozess auszuführen, eine zweite Nachricht an die Server-Vorrichtung mit einer Prozess-Ausführungsanforderung zu übertragen, wobei die zweite Nachricht ein durch die Berechnungs-Ausführungsmittel (300) erhaltenes Berechnungsergebnis enthält.
  6. Client-Vorrichtung nach Anspruch 5, wobei das Übertragungsmittel (310) ausgelegt ist, eine vorläufige Nachricht an die Server-Vorrichtung mit nur der Prozess-Ausführungsanforderung zu übertragen, wenn eine Ausführung des bestimmten Prozesses vor einem Empfangen der ersten Nachricht aufgefordert wird.
  7. Prozess-Ausführungsverfahren, umfassend: einen ersten Schritt zum Übertragen (SA4), von einer Server-Vorrichtung (20) an eine entsprechende Client-Vorrichtung (30), 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 (SB2), bei jeder Client-Vorrichtung (30), 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 (SB3) der ausgewählten Berechnung und zum Übertragen (SB4) 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 (SA5), an der Server-Vorrichtung (20), nach einem Empfang der zweiten Nachricht, ob das Berechnungsergebnis korrekt ist, und wenn es bestimmt ist korrekt zu sein, zum Identifizieren (SA6), 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 (SA7) des bestimmten Prozesses entsprechend einer auf der Grundlage der identifizierten Berechnungsumfanges bestimmten Priorität.
DE602005005753T 2004-08-25 2005-08-23 Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem Active DE602005005753T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004245433A JP4555025B2 (ja) 2004-08-25 2004-08-25 サーバ装置、クライアント装置および処理実行方法
JP2004245433 2004-08-25

Publications (2)

Publication Number Publication Date
DE602005005753D1 DE602005005753D1 (de) 2008-05-15
DE602005005753T2 true DE602005005753T2 (de) 2009-04-16

Family

ID=35559486

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005005753T Active DE602005005753T2 (de) 2004-08-25 2005-08-23 Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem

Country Status (5)

Country Link
US (1) US8001188B2 (de)
EP (1) EP1635530B1 (de)
JP (1) JP4555025B2 (de)
CN (1) CN1741530B (de)
DE (1) DE602005005753T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014205331A1 (de) * 2014-03-21 2015-09-24 Siemens Aktiengesellschaft Sender zum Senden einer Nachricht und Empfänger zum Empfangen einer Nachricht

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7675854B2 (en) * 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US8412952B1 (en) * 2009-05-06 2013-04-02 Symantec Corporation Systems and methods for authenticating requests from a client running trialware through a proof of work protocol
US9960967B2 (en) * 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
CN102281258B (zh) * 2010-06-09 2016-08-03 中兴通讯股份有限公司 基于密钥管理协议的防止拒绝服务攻击的方法和装置
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9386088B2 (en) 2011-11-29 2016-07-05 A10 Networks, Inc. Accelerating service processing using fast path TCP
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US9118618B2 (en) 2012-03-29 2015-08-25 A10 Networks, Inc. Hardware-based packet editor
US8887280B1 (en) * 2012-05-21 2014-11-11 Amazon Technologies, Inc. Distributed denial-of-service defense mechanism
US8782221B2 (en) 2012-07-05 2014-07-15 A10 Networks, Inc. Method to allocate buffer for TCP proxy session based on dynamic network conditions
US8856924B2 (en) * 2012-08-07 2014-10-07 Cloudflare, Inc. Mitigating a denial-of-service attack in a cloud-based proxy service
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9106561B2 (en) 2012-12-06 2015-08-11 A10 Networks, Inc. Configuration of a virtual service network
CN108027805B (zh) 2012-09-25 2021-12-21 A10网络股份有限公司 数据网络中的负载分发
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9906552B1 (en) * 2013-02-13 2018-02-27 Amazon Technologies, Inc. Managing system load
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
EP2974118B1 (de) * 2013-03-15 2019-11-27 Robert Bosch GmbH System und verfahren zur abschwächung von dienstverweigerungsangriffen in vernetzten computersystemen
WO2014179753A2 (en) * 2013-05-03 2014-11-06 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US9392018B2 (en) * 2013-09-30 2016-07-12 Juniper Networks, Inc Limiting the efficacy of a denial of service attack by increasing client resource demands
US10230770B2 (en) 2013-12-02 2019-03-12 A10 Networks, Inc. Network proxy layer for policy-based application proxies
US8984635B1 (en) * 2014-01-06 2015-03-17 Cloudflare, Inc. Authenticating the identity of initiators of TCP connections
US8806011B1 (en) 2014-01-06 2014-08-12 Cloudflare, Inc. Transparent bridging of transmission control protocol (TCP) connections
US10020979B1 (en) 2014-03-25 2018-07-10 A10 Networks, Inc. Allocating resources in multi-core computing environments
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US9806943B2 (en) 2014-04-24 2017-10-31 A10 Networks, Inc. Enabling planned upgrade/downgrade of network devices without impacting network sessions
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
CN105634982B (zh) * 2014-11-05 2019-01-11 大唐软件技术股份有限公司 一种测速服务器的排队方法、测速服务器和客户端
US10268467B2 (en) 2014-11-11 2019-04-23 A10 Networks, Inc. Policy-driven management of application traffic for providing services to cloud-based applications
WO2016167693A1 (en) 2015-04-16 2016-10-20 Telefonaktiebolaget Lm Ericsson (Publ) Method and device for establishing a computational puzzle for use in communication between a client and a server.
US10284371B2 (en) 2015-05-19 2019-05-07 Workday, Inc. Brute force attack prevention system
US9787696B2 (en) * 2015-05-19 2017-10-10 Workday, Inc. Brute force attack prevention system
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10389835B2 (en) 2017-01-10 2019-08-20 A10 Networks, Inc. Application aware systems and methods to process user loadable network applications
CN107104852A (zh) * 2017-03-28 2017-08-29 深圳市神云科技有限公司 监控云平台虚拟网络环境的方法及装置
US10866822B2 (en) * 2017-11-28 2020-12-15 Bank Of America Corporation Computer architecture for emulating a synchronous correlithm object processing system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058418A (en) * 1997-02-18 2000-05-02 E-Parcel, Llc Marketing data delivery system
US7197639B1 (en) * 1999-02-05 2007-03-27 Rsa Security Inc. Cryptographic countermeasures against connection depletion attacks
US20020016835A1 (en) * 2000-05-25 2002-02-07 Gary Gamerman System and method for cascaded distribution of processing
US7143163B1 (en) * 2000-07-26 2006-11-28 Lucent Technologies Inc. System and method for exacting a system resource access cost
US6883095B2 (en) * 2000-12-19 2005-04-19 Singlesigon. Net Inc. System and method for password throttling
US20040136379A1 (en) * 2001-03-13 2004-07-15 Liao Raymond R Method and apparatus for allocation of resources
US6958998B2 (en) * 2001-07-09 2005-10-25 International Business Machines Corporation Traffic management in packet-based networks
US6944663B2 (en) * 2002-03-06 2005-09-13 Sun Microsystems, Inc. Method and apparatus for using client puzzles to protect against denial-of-service attacks
US20030187732A1 (en) * 2002-03-29 2003-10-02 Seta Joseph D. Method and system for presenting a sales incentive
US7269136B2 (en) * 2002-08-30 2007-09-11 Sun Microsystems, Inc. Methods and apparatus for avoidance of remote display packet buffer overflow
US7149801B2 (en) * 2002-11-08 2006-12-12 Microsoft Corporation Memory bound functions for spam deterrence and the like
KR100565896B1 (ko) * 2002-12-11 2006-03-31 한국전자통신연구원 양방향 위성 멀티미디어 시스템에서의 동적 자원 할당 장치 및 그 방법과 기록매체
US20070008884A1 (en) * 2003-10-08 2007-01-11 Bob Tang Immediate ready implementation of virtually congestion free guarantedd service capable network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014205331A1 (de) * 2014-03-21 2015-09-24 Siemens Aktiengesellschaft Sender zum Senden einer Nachricht und Empfänger zum Empfangen einer Nachricht

Also Published As

Publication number Publication date
US8001188B2 (en) 2011-08-16
CN1741530B (zh) 2010-09-01
CN1741530A (zh) 2006-03-01
US20060069804A1 (en) 2006-03-30
DE602005005753D1 (de) 2008-05-15
JP4555025B2 (ja) 2010-09-29
EP1635530B1 (de) 2008-04-02
JP2006065492A (ja) 2006-03-09
EP1635530A1 (de) 2006-03-15

Similar Documents

Publication Publication Date Title
DE602005005753T2 (de) Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem
DE602005001426T2 (de) Servervorrichtung, Verfahren zum Steuern einer Servervorrichtung und Verfahren zur Herstellung einer Kommunikationsverbindung unter Verwendung einer Servervorrichtung
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE60200451T2 (de) Herstellung einer gesicherten Verbindung mit einem privaten Unternehmensnetz über ein öffentliches Netz
DE60317123T2 (de) Verfahren zur Sicherung von Kommunikation über ein Netzwerk
DE102006012614B4 (de) Verfahren und Vorrichtung für den Durchlauf von Paketen durch eine Einrichtung zur Netzwerkadressenübersetzung
DE602004008099T2 (de) Verfahren, system und artikel zur dynamischen echtzeit-stream-aggregation in einem netzwerk
DE60127978T2 (de) System und Verfahren zur Verteidigung gegen Denial-of-Service angriffe auf die Netzwerkknoten
DE60133241T2 (de) Mehranwendung-sicherheitsrelais
DE60314367T2 (de) Verfahren und Vorrichtung zur gleichrangigen Kommunikation
DE60101841T2 (de) Verfahren und vorrichtung zum verteilen der last in einer rechnerumgebung
DE602004007301T2 (de) Adressierungs-verfahren und -vorrichtung zum aufbau von hip-verbindungen zwischen gewöhnlichen und hip-fähigen netzknoten
DE60121101T2 (de) Gesichtertes Kommunikationsverfahren, gesichtertes Kommunikationssystem und Gerät
DE60031673T2 (de) Aufbau eines paketnetzrufes zwischen einem mobilen endgerät und einer anpassungsfunktion
DE10296293B4 (de) Verfahren und Vorrichtung zum Abbilden einer IP-Adresse auf eine MSISDN-Nummer innerhalb eines Dienstnetzwerks
DE60027971T2 (de) Einmalige Anmeldung in einem Netzwerksystem, das mehrere gesondert steuerbare Ressourcen mit begrenztem Zugang enthält
DE602004001717T2 (de) Authentisierungsmethode in einem Draht/drahtlos-Kommunikationssystem mit Auszeichnungssprache
DE60221557T2 (de) Methode und gerät zur adressenübersetzung für gesicherte verbindungen
DE60310645T2 (de) Verhinderung von Paketzerteilung
DE60311688T2 (de) Verfahren um Verbindungsverhandlungen für höhere Protokollschichten zu beschleunigen
DE112005003217B4 (de) Routing von Mitteilungen
DE60121755T2 (de) Ipsec-verarbeitung
DE60030508T2 (de) Netzwerkzustandsserver, Informationsverteilungssystem, Steuerverfahren, und Speichermedium zur Speicherung eines Steuerungsprogramms
DE602005000439T2 (de) Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem
DE112005000705T5 (de) Konfiguration von Umleitungstabellen

Legal Events

Date Code Title Description
8381 Inventor (new situation)

Inventor name: NAKAGAWA, TOMOHIRO, CHIYODA-KU TOKYO 100-6150, JP

Inventor name: INAMURA, HIROSHI, CHIYODA-KU TOKYO 100-6150, JP

Inventor name: MIYAKE, MOTOHARU, CHIYODA-KU TOKYO 100-6150, JP

8364 No opposition during term of opposition