JP4555025B2 - サーバ装置、クライアント装置および処理実行方法 - Google Patents

サーバ装置、クライアント装置および処理実行方法 Download PDF

Info

Publication number
JP4555025B2
JP4555025B2 JP2004245433A JP2004245433A JP4555025B2 JP 4555025 B2 JP4555025 B2 JP 4555025B2 JP 2004245433 A JP2004245433 A JP 2004245433A JP 2004245433 A JP2004245433 A JP 2004245433A JP 4555025 B2 JP4555025 B2 JP 4555025B2
Authority
JP
Japan
Prior art keywords
client
message
calculation
server device
written
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.)
Expired - Fee Related
Application number
JP2004245433A
Other languages
English (en)
Other versions
JP2006065492A (ja
Inventor
基治 三宅
智尋 中川
浩 稲村
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
Priority to JP2004245433A priority Critical patent/JP4555025B2/ja
Priority to CN200510091656.XA priority patent/CN1741530B/zh
Priority to EP05018258A priority patent/EP1635530B1/en
Priority to DE602005005753T priority patent/DE602005005753T2/de
Priority to US11/210,719 priority patent/US8001188B2/en
Publication of JP2006065492A publication Critical patent/JP2006065492A/ja
Application granted granted Critical
Publication of JP4555025B2 publication Critical patent/JP4555025B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Description

本発明は、クライアント装置からの要求に応じた処理をサーバ装置に実行させる技術に関する。
近年、インターネットを介して様々な通信サービスが提供されている。インターネットにおいて利用されている通信プロトコルの一例としては、TCP(Transmission Control Protocol)が挙げられる。TCPは、いわゆるコネクション型の通信プロトコルであり、信頼性の高い通信を実現することが可能である。なお、コネクション型の通信プロトコルとは、データの送受信に先だって、そのデータの送り手側の通信装置(以下、サーバ装置)とその受け手側の通信装置(以下、クライアント装置)との両者に、そのデータの送受信に用いる通信路(以下、コネクション)を示すデータ(以下、コネクション識別子)を交換させ、コネクションの確立を行っておく通信プロトコルである。上記コネクション識別子の一例としては、サーバ装置やクライアント装置に割り当てられている通信アドレスや、各装置がそのデータの送受信に用いる通信ポートを表すデータ(例えば、通信ポート番号)およびシーケンス番号の初期値などが挙げられる。例えば、TCPにおいては、3ウェイハンドシェークと呼ばれる手順で上記コネクションの確立が行われる。以下では、まず、3ウェイハンドシェークの概要について説明する。
図10は、TCPにしたがって通信する機能を有するサーバ装置40Aとクライアント装置50Aとが実行する3ウェイハンドシェークの概要を表す図である。例えば、サーバ装置40Aに記憶されているデータの取得を所望するユーザが、そのサーバ装置40Aの通信アドレスやそのデータの取得に用いる通信プロトコルを表すデータ(例えば、URLなど)の入力など所定の操作を行うと、クライアント装置50Aは、図10に示すように、SYNメッセージ100をサーバ装置40Aへ送信する。このSYNメッセージ100は、サーバ装置40Aからクライアント装置50Aへデータを送信する際に用いられるコネクション(以下、下りのコネクション)の確立を要求する旨のメッセージであり、このSYNメッセージ100には、上記下りのコネクションのコネクション識別子が書き込まれている。
一方、サーバ装置40Aは、SYNメッセージ100を受信すると、そのSYNメッセージ100の送信元であるクライアント装置50Aとの間の通信を継続しコネクションの確立を行うために、コンピュータ資源(以下、「リソース」ともいう)の割り当てを行う。具体的には、サーバ装置40Aは、その通信相手(すなわち、クライアント装置50A)を識別するデータ(例えば、上記コネクション識別子)をRAM(Random Access Memory)などの記憶部へ書き込み記憶する。次いで、サーバ装置40Aは、上記SYNメッセージ100を受信したことを表すとともに逆方向のコネクション(以下、上りのコネクション)の確立を要求する旨のSYN/ACKメッセージ110をクライアント装置50Aへ送信する。このSYN/ACKメッセージ110には、クライアント装置50Aから送信されたデータを受信する際に用いるコネクション(すなわち、上記上りのコネクション)のコネクション識別子が書き込まれている。なお、サーバ装置40Aは、上記SYN/ACKメッセージ110を送信してから所定の時間が経過しても上記SYN/ACKメッセージを受信したことを表すメッセージ(以下、「ACK」)が返信されてこない場合には、上記記憶部の格納内容を参照して上記SYN/ACKメッセージ100を再送信する。
クライアント装置50Aは、SYN/ACKメッセージ110を受信すると、そのSYN/ACKメッセージ110に書き込まれているコネクション識別子を読み出しそのコネクション識別子の表すコネクション(すなわち、上記上りのコネクション)を確立する。そして、クライアント装置50AはSYN/ACKメッセージ110を受信したことを表すACK120をサーバ装置40Aへ送信する。このACK120にも、上記下りのコネクションのコネクション識別子が書き込まれている。サーバ装置40Aは、このACK120を受信すると、そのACK120に書き込まれているコネクション識別子の表すコネクション(すなわち、上記下りのコネクション)を確立し、その通信相手を表すデータを上記記憶部から削除する。そして、サーバ装置40Aは、データの送信を要求する旨のメッセージ(例えば、HTTPのGETメソッドを含むメッセージ)が上記下りのコネクションを介してクライアント装置50Aから送信されてくることを待ち受ける。
ところで、サーバ装置40Aの記憶部の記憶容量は有限であるため、その記憶部へ格納することができるコネクション識別子(すなわち、コネクションを確立中の通信相手を表すデータ)の数にも上限がある。つまり、サーバ装置40Aは、この上限を超える数のクライアント装置50Aとの通信を継続しACK120が送信されてくることを待ち続けることはできない。このことを悪用してサーバ装置40Aを利用不能にし、通信サービスの提供を妨害することが企てられる虞がある。いわゆるSYNFlood攻撃である。
より詳細に説明すると、SYNFlood攻撃とは、多量のSYNメッセージ100をサーバ装置40Aへ送信し続け、サーバ装置40Aから返信されてくるSYN/ACKメッセージ110を受信しても、意図的にACK120を返信しないようにすることである。このようなことが為されると、サーバ装置40Aは、その通信相手との間でコネクションの確立が完了していないものとみなして、その通信相手を表すデータを記憶部に保持したまま、ACK120が返信されてくることを待ち続ける。このため、上記SYNFlood攻撃が為されると、記憶部に格納されている上記データの数が急速に増加し、その上限へ達してしまう。このような状況下では、サーバ装置40Aは、他のクライアント装置からのコネクション確立要求を受け付けることができなくなり、それら他のクライアント装置に対して通信サービスを提供することができなくなってしまう。
このようなSYNFlood攻撃に対する防御方法の一例としては、非特許文献1に開示されたクライアントパズルプロトコルや、非特許文献2に開示されたクライアントパズルオークションが挙げられる。以下、図面を参照しつつ、これらについて説明する。
図11は、クライアントパズルプロトコルの概略を説明するための図である。なお、図11において、サーバ装置40Bとクライアント装置50Bとはともにクライアントパズルプロトコルにしたがってコネクションを確立する通信装置である。サーバ装置40Bが図10のサーバ装置40Aと異なっている点は、以下の2つの点である。第1に、SYNメッセージ100を受信しても、その送信元を示すデータを記憶しない点である。そして、第2に、SYNメッセージ100を受信した場合に、SYN/ACKメッセージ110に代えて、所定の演算の実行およびその演算結果の返信を要求する旨のメッセージ(図11では、RST/ACKメッセージ)101を送信する点である。このRST/ACKメッセージ101には、上記所定の演算を表すデータ(以下、クライアントパズル)が書き込まれている。
一方、クライアント装置50Bは、RST/ACKメッセージ101を受信すると、そのRST/ACKメッセージ101に書き込まれているクライアントパズルの表す演算を行い、その演算結果を書き込んだSYNメッセージ102をサーバ装置40Bへ送信する。以下では、上記クライアントパズルの表す演算を実行することを「クライアントパズルを解く」といい、その演算結果を「クライアントパズルの解」という。そして、サーバ装置40Bは、SYNメッセージ102を受信すると、そのSYNメッセージ102に書き込まれているクライアントパズルの解が正しいか否かを判定し、正しいと判定した場合にのみ、前述した3ウェイハンドシェークと同一の手順でクライアント装置50Bとの間にコネクションを確立する。
このように、サーバ装置40Bは、コネクションの確立を要求してきたクライアント装置50Bに対してクライアントパズルを送信し、そのクライアントパズルの正しい解が送信されてくるまで、コネクションの確立を行わない。このため、多量のSYNメッセージを送信しサーバ装置40Bに対してSYNFlood攻撃を行っているクライアント装置は、各SYNメッセージに対してサーバ装置40Bから返信されてくるクライアントパズルを解かなければ、そのSYNFlood攻撃を継続することができなくなる。つまり、サーバ装置40Bに対してSYNFlood攻撃を継続するには、多量のクライアントパズルを解かなければならないが、このようなことには多量のリソースが必要になり、結局、SYNメッセージを送信し続けることが困難になってしまう。このように、クライアントパズルプロトコルによれば、SYNFlood攻撃を効果的に防御することが可能になる。
ところで、上述したクライアントパズルプロトコルにおいては、クライアントパズルの表す演算の演算量(以下、「クライアントパズルの難易度」ともいう)が適切に設定されていることが重要である。その理由は、以下の通りである。上記難易度が低すぎる(すなわち、上記演算量が少なすぎる)と、少ないリソースでクライアントパズルの解を求めることが可能であり、SYNFlood攻撃を抑止することができなくなってしまうからである。逆に、上記難易度が高すぎる(すなわち、上記演算量が多すぎる)と、SYNFlood攻撃を行っていないクライアント装置がサーバ装置とコネクションを確立する場合であっても、1つのクライアントパズルを解くことに要する時間が長くなり、そのサーバ装置によって提供される通信サービスを利用しづらくなってしまうからである。
このように、上記クライアントパズルプロトコルにおいては、クライアントパズルの難易度を適切に設定しておくことが重要であるが、現実の通信システムにおいては困難である。その理由は、現実の通信システムにおいては、パーソナルコンピュータやPDA(Personal Digital Assistance)など処理能力の異なるクライアント装置が混在して利用されていることが一般的であり、各クライアント装置毎にクライアントパズルの適切な難易度が異なっているからである。上記非特許文献2に開示されたクライアントパズルオークションは、係るクライアントパズルプロトコルの問題点を改善することを目的としている。以下、クライアントパズルオークションについて説明する。
図12は、クライアントパズルオークションの概要を説明するための図である。図12のサーバ装置40Cとクライアント装置50Cとは、クライアントパズルオークションによってコネクションの確立を行う通信装置である。図12のクライアント装置50Cは、クライアントパズルの解を求めSYNメッセージ102にその解を書き込んで送信する際に、自装置の処理能力に応じて以下の2種類のデータの何れかを書き込んで送信する。すなわち、クライアント装置50Cは、更に難易度の高いクライアントパズルの送信を要求する旨の第1のデータか、そのようなクライアントパズルの送信を要求しない旨の第2のデータの何れかを書き込んでSYNメッセージ102を送信する。
一方、サーバ装置40Cは、クライアント装置50Cから受信したSYNメッセージ102に上記第1のデータが書き込まれていた場合には、より難易度の高いクライアントパズルを生成しそのクライアントパズルを書き込んだRST/ACKメッセージ101を送信する。逆に、クライアント装置50Cから受信したSYNメッセージ102に上記第2のデータが書き込まれていた場合には、サーバ装置40Cは、従来の3ウェイハンドシェークにしたがってコネクションの確立を開始する。
ここで注目すべき点は、図12のサーバ装置40Cは、複数のクライアント装置からSYNメッセージ102を受信した場合に、難易度が高いクライアントパズルの解が書き込まれているSYNメッセージ102ほど優先的に処理しコネクションの確立を行う点である。一般に、難易度の高いクライアントパズルを解くには、多量のリソースが必要になり、コネクション確立要求の送信頻度が低下してしまう。つまり、上記の如き優先順位付けを行うことは、高い負荷を負担しコネクション確立要求の送信頻度が低下することを受け入れたことに対する代償である。逆に、クライアント装置50Cの立場から見れば、自装置から送信されたコネクション確立要求を優先的にサーバ装置40Cに処理させるためには、高い負荷が掛かることを受け入れなけれならない。上述したように、高い負荷が掛かることは、SYNFlood攻撃を行う際の大きな障害になるのであるから、このクライアントパズルオークションによってSYNFlood攻撃を効果的に防御することが可能になる。加えて、各クライアント装置50Cは、各々の処理能力に見合ったクライアントパズルをサーバ装置40Cから取得し解くことができるため、上述したクライアントパズルプロトコルの問題点も解消される。
A.Juels and J.Brainard(RSA Labs), "A Cryptographic Defense Against Connection Depletion Attacks", インターネット <http://www.rsasecurity.com/rsalabs/ staff/bios/ajuels/publications/client-puzzles> XiaoFeng Wang, Michael K.Reiter, "Defending Against Denial-of-Service Attack With Puzzle Auctions", 2003 IEEE Symposium on Security and Privacy,2003 インターネット <http://www.cs.cornell.edu/People/ egs/syslunch-spring04/puzzleauctions.pdf>
上述の如く、クライアントパズルオークションによれば、クライアント装置にその処理能力に応じた負荷を負担させることが可能になるとともに、各クライアント装置が負担した負荷に応じた優先順位でコネクションの確立が行われるようにすることが可能になる。しかしながら、上述したクライアントパズルオークションでは、従来の3ウェイハンドシェークやクライアントパズルプロトコルに比較して、サーバ装置とクライアント装置との間で送受信されるメッセージの数(以下、通信トラヒック)が増加してしまう(図10、図11および図12参照)。このように、サーバ装置とクライアント装置との間の通信トラヒックが増加してしまうことは、両装置間の通信を仲介する通信網に輻輳が発生する原因となりかねず好ましくない。
本発明は上記課題に鑑みて為されたものであり、クライアント装置とサーバ装置との間の通信トラヒックが増加することを回避しつつ、クライアント装置にその処理能力に応じた負荷を負担させることを可能にするとともに、各クライアント装置から実行を要求された処理を各クライアント装置の負担した負荷に応じた優先順位でサーバ装置に実行させることを可能にする技術を提供することを目的としている。
上記課題を解決するために、本発明は、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルを複数まとめて書き込んだ第1のメッセージを通信相手の各クライアント装置へ送信する送信手段と、所定の処理の実行を要求するとともに前記複数の演算の何れかの演算結果が書き込まれた第2のメッセージが前記各クライアント装置から送信されてきた場合に、該演算結果が正しい演算結果であるか否かを判定する判定手段と、前記判定手段により正しい演算結果であると判定された場合に、前記各クライアント装置にて実行された演算の演算量をその演算結果に基づいて特定し、特定された演算量が多い順に、または、特定された演算量が少ない順に、前記各クライアント装置に対応する前記所定の処理を実行する処理実行手段とを有するサーバ装置を提供する。
より好ましい態様の上記サーバ装置にあっては、前記送信手段は、前記所定の処理の実行を要求する旨のみの第3のメッセージが送信されてきたことを契機として、前記第1のメッセージを該第3のメッセージの送信元であるクライアント装置へ送信することを特徴としている。
また、別の好ましい態様の上記サーバ装置にあっては、前記第1のメッセージには、その送信元とその宛先とが通信を開始するときにだけデータが書き込まれる特定の領域であって、その送信元の通信態様の詳細をその宛先へ通知するための付加データが書き込まれる特定の領域が設けられており、前記送信手段は、前記付加データに代えて前記クライアントパズルを前記特定の領域に書き込んで前記第1のメッセージを送信することを特徴としており、更に、好ましい態様の上記サーバ装置にあっては、前記送信手段は、TCPにしたがって前記第1のメッセージを送信し、前記特定の領域は、オプション領域であることを特徴としている。
また、上記課題を解決するために本発明は、通信手段と、制御手段と、を備え、前記制御手段は、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルを複数まとめて書き込んだ第1のメッセージを前記通信手段によって通信相手の各クライアント装置へ送信する第1の処理と、所定の処理の実行を要求するとともに前記複数の演算の何れかの演算結果が書き込まれた第2のメッセージを前記通信手段によって前記各クライアント装置から受信した場合に、該演算結果が正しいか否かを判定する第2の処理と、前記第2の処理にて正しい演算結果であると判定された場合に、前記各クライアント装置にて実行された演算の演算量をその演算結果に基づいて特定し、特定された演算量が多い順に、または、特定された演算量が少ない順に、前記各クライアント装置に対応する前記所定の処理を実行する第3の処理と、を行うことを特徴とするサーバ装置を提供する。
また、上記課題を解決するために本発明は、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルが複数まとめて書き込まれた第1のメッセージが通信相手のサーバ装置から送信されてきた場合に、該複数の演算の各々の演算量を該クライアントパズルに基づいて特定し、特定された演算量と予め定められた閾値とに基づいて、実行するべき演算を選択する選択手段と、前記選択手段によって選択された演算を実行する演算実行手段と、所定の処理の実行を前記サーバ装置へ要求する場合に、該所定の処理の実行の要求と前記演算実行手段による演算結果とを書き込んだ第2のメッセージを前記サーバ装置へ送信する送信手段とを有するクライアント装置を提供する。
より好ましい態様の上記クライアント装置にあっては、前記第1のメッセージを受信していない状況下で前記所定の処理の実行を前記サーバ装置へ要求する場合には、前記送信手段は、その旨のみを書き込んだ第3のメッセージを前記サーバ装置へ送信することを特徴としている。
また、上記課題を解決するために本発明は、通信手段と、制御手段と、を備え、前記制御手段は、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルが複数まとめて書き込まれた第1のメッセージを前記通信手段によって通信相手のサーバ装置から受信した場合に、該複数の演算の各々の演算量を該クライアントパズルに基づいて特定し、特定された演算量と予め定められた閾値とに基づいて、実行するべき演算を選択する第1の処理と、前記第1の処理にて選択した演算を実行する第2の処理と、所定の処理の実行を前記サーバ装置へ要求する場合に、該所定の処理の実行の要求と前記第2の処理にて得られた演算結果とを書き込んだ第2のメッセージを前記通信手段によって前記サーバ装置へ送信する第3の処理と、を行うことを特徴とするクライアント装置を提供する。
また、上記課題を解決するために本発明は、サーバ装置が、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルを複数まとめて書き込んだ第1のメッセージを通信相手の各クライアント装置へ送信する第1のステップと、前記第1のメッセージを受信したクライアント装置が、前記複数の演算の各々についてその演算量を前記クライアントパズルに基づいて特定し、特定された演算量と予め定められた閾値とに基づいて、実行するべき演算を選択して実行し、その演算結果と所定の処理の実行を要求する旨とを書き込んだ第2のメッセージを前記サーバ装置へ送信する第2のステップと、前記第2のメッセージを受信したサーバ装置が、該第2のメッセージに書き込まれている演算結果が正しい演算結果であるか否かを判定し、正しい演算結果であると判定された場合に、該第2のメッセージの送信元であるクライアント装置にて実行された演算の演算量をその演算結果に基づいて特定し、特定された演算量が多い順に、または、特定された演算量が少ない順に、前記各クライアントに対応する前記所定の処理を実行する第3のステップとを有することを特徴とする処理実行方法を提供する。
このようなサーバ装置、クライアント装置および処理実行方法によれば、上記サーバ装置から送信された上記第1のメッセージに書き込まれている複数のクライアントパズルの何れかの表す演算が上記クライアント装置によって実行され、所定の実行を要求する旨の第2のメッセージにその演算結果が書き込まれて送信される。この第2のメッセージを受信したサーバ装置は、その第2のメッセージに正しい演算結果が書き込まれている場合に、その演算結果を得るために上記クライアント装置が実行した演算の演算量を特定し、その特定結果に応じた優先順位で各クライアント装置から実行を要求された処理を実行する。
本発明によれば、サーバ装置に対して処理の実行を要求するクライアント装置にその処理能力に応じた負荷を負担させることが可能になるとともに、各クライアント装置が負担した負荷に応じた優先順位でそのクライアント装置から実行を要求された処理をサーバ装置に実行させることが可能になる、といった効果を奏する。
また、本発明によれば、演算量の異なる複数の演算の各々を表すクライアントパズルが1つのメッセージで一括してクライアント装置へ送信されるため、クライアント装置とサーバ装置との間の通信トラヒックが増加することがない、といった効果も奏する。
以下、図面を参照しつつ本発明を実施するための最良の形態について説明する。
(A:構成)
(A−1:通信システムの構成)
図1は、本発明の1実施形態に係るサーバ装置20とクライアント装置30を有する通信システムの全体構成の一例を示す図である。図1に示すように、この通信システムは、例えばインターネットなどの通信網10に接続されているサーバ装置20とクライアント装置30とを含んでいる。なお、図1では、1つのクライアント装置と1つのサーバ装置とが通信網10に接続されている場合について例示されているが、多数のクライアント装置が通信網10に接続されているとしても良く、多数のサーバ装置が通信網10に接続されているとしても良い。また、以下では、クライアント装置とサーバ装置とを区別する必要がない場合には、「通信装置」と称する。
図1の通信網10は、ルータやゲートウェイなどの中継装置を含んでおり、自網に接続されている通信装置から所定の通信プロトコル(本実施形態では、TCP)にしたがってメッセージが送信されてきた場合に、そのメッセージを上記中継装置によってその宛先へ適宜ルーティングし送り届けるためのものである。本実施形態では、通信網10がインターネットである場合について説明するが、LAN(Local Area Network)であっても良く、また、移動パケット通信網や無線LANのような無線通信網であっても良い。
図1のサーバ装置20とクライアント装置30とは、何れもパーソナルコンピュータ(以下、「PC」)であり、通信網10を介してTCPにしたがってコネクションを確立しデータを送受信する機能を備えている。具体的には、サーバ装置20やクライアント装置30は、図2に示すフォーマットを有するメッセージを生成し、そのヘッダ部の各領域に所定のデータを書き込んで送信し上記コネクションの確立およびそのコネクションを介したデータの送受信を行うものである。
図2は、TCPにしたがって送信されるメッセージのフォーマットを示す図である。なお、図2においては詳細な図示は省略したが、コントロールフラグ領域は、URG、ACK、PSH、RST、SYNおよびFINの6つのビットフラグを書き込むための領域である。サーバ装置20やクライアント装置30は、これら6つのビットフラグに“1”又は“0”を書き込んで送信することによって、上述した、SYN、SYN/ACK、ACKおよびRSTの各メッセージを送信することができる。例えば、クライアント装置30からサーバ装置20へ宛てて送信されるSYNメッセージの各領域には、以下のデータが書き込まれている。
すなわち、図2の送信元ポート番号には、通信の開始を要求したアプリケーション(例えば、ブラウザなど)の通信ポート番号が書き込まれる。図2の送信先ポート番号には、その通信相手のアプリケーション(例えば、HTTPD)の通信ポート番号が書き込まれる。図2のシーケンス番号には、上記通信を行う際にサーバ装置20が用いるシーケンス番号の初期値が書き込まれる。そして、コントロールフラグについてはSYNフラグにのみ“1”が書き込まれ、他のフラグには“0”が書き込まれる。なお、図2においては省略したが、サーバ装置20とクライアント装置30との間で送受信されるメッセージには、TCPよりも下層の通信プロトコル(例えば、Internet Protocol:以下、「IP」)によってそのメッセージの送信元や宛先である通信装置を表すデータ(例えば、各装置に割り当てられているIPアドレスなどの通信アドレス)が書き込まれたヘッダが更に付加されて送信される。つまり、クライアント装置30からサーバ装置20へ送信されるSYNメッセージには、サーバ装置20からクライアント装置30へデータを送信する際に用いられる下りのコネクションのコネクション識別子が書き込まれている。
さて、図1のサーバ装置20とクライアント装置30とは、本発明に係る処理実行方法にしたがってコネクションの確立を行うために、前述した3ウェイハンドシェーク(図10参照)やクライアントパズルプロトコル(図11)、クライアントパズルオークション(図12参照)の通信シーケンスとは異なる通信シーケンス(図3参照)でコネクションの確立を行う機能を備えている。以下、サーバ装置20とクライアント装置30とについて詳細に説明する。
(A−2:サーバ装置20の構成)
まず、図4を参照しつつサーバ装置20の構成を説明する。図4に示されているように、サーバ装置20は、制御部200と、通信インターフェイス(以下、「IF」と表記する)部210と、記憶部220と、これら各構成要素間のデータ授受を仲介するバス230とを有している。
制御部200は、例えばCPU(Central Processing Unit)であり、記憶部220に格納されているソフトウェアを読み出して実行することにより、サーバ装置20の各部を制御することができる。通信IF部210は、通信網10に接続されており、通信網10を介して送くられてくるメッセージを受信し制御部200へ引渡すとともに、制御部200から引渡されたメッセージを通信網10へ送り出すためのものである。
記憶部220は、図4に示されているように、揮発性記憶部220aと不揮発性記憶部220bとを有している。揮発性記憶部220aは、例えばRAMであり、ソフトウェアにしたがって作動している制御部200によってワークエリアとして利用される。一方、不揮発性記憶部220bは、例えば、ハードディスクであり、各種データおよび各種ソフトウェアが格納されている。
不揮発性記憶部220bに記憶されているデータの一例としては、クライアント装置30からの要求に応じてそのクライアント装置30へ送信するデータや、難易度の異なる複数のクライアントパズルの各々を生成する際に用いられる複数のデータ(以下、サーバシークレット)などが挙げられる。なお、本実施形態では、不揮発性記憶部220bに複数のサーバシークレットが格納されている場合について説明するが、クライアント装置30からコネクションの確立を要求される度(すなわち、図3のSYNメッセージ100を受信する度)に、所定の擬似乱数生成アルゴリズム(例えば、M系列や混合合同法など)にしたがって生成した擬似乱数を上記サーバシークレットとして用いるようにしても勿論良く、また、係る擬似乱数に所定の値を加算してサーバシークレットを生成するとしても良い。
不揮発性記憶部220bに格納されているソフトウェアの一例としては、オペレーティングシステム(Operating System:以下、「OS」)を制御部200に実現させるためのOSソフトウェアや、OSの制御下で、図3に示す通信シーケンスでコネクションを確立する処理を制御部200に実行させるためのサーバソフトウェアが挙げられる。以下、これらソフトウェアを実行することによって制御部200に付与される機能について説明する。
サーバ装置20の電源(図示省略)が投入されると、制御部200は、まず、OSソフトウェアを不揮発性記憶部220bから読み出し実行する。OSソフトウェアにしたがって作動している制御部200には、サーバ装置20の各部を制御する機能や他のソフトウェアを不揮発性記憶部220bから読み出し実行する機能が付与される。例えば、OSソフトウェアの実行を完了し、OSを実現している状態の制御部200は、即座に、上記サーバソフトウェアを不揮発性記憶部220bから読み出し実行する。
そして、上記サーバソフトウェアにしたがって作動している制御部200には、下りのコネクションの確立を要求する旨のメッセージ(図3:SYNメッセージ100)を通信IF部210を介してクライアント装置30から受信した場合に、図5に示すフローチャートにしたがって、そのクライアント装置30との間に下りのコネクションを確立するための3つの機能が付与される。
すなわち、上記サーバソフトウェアにしたがって作動している制御部200に付与される第1の機能は、演算量の異なる複数の演算の何れかを実行しその演算結果を返信することを要求する旨のメッセージを通信IF部210を介してクライアント装置30へ送信する処理(以下、送信処理)を行う機能が付与される。本実施形態では、上記メッセージとしてSYNメッセージ109(図3参照)が用いられている。このSYNメッセージ109には、クライアント装置30との間の上りのコネクションを表すコネクション識別子が書き込まれており、その上りのコネクションの確立をクライアント装置30へ要求する、といった役割も担っている。
より詳細に説明すると、制御部200は、上記第1の機能によって、SYNメッセージ100に書き込まれていたコネクション識別子と、そのSYNメッセージ100を受信した時刻(図示せぬ計時部により取得)を表す受信時刻データと、上記複数のサーバシークレットとに基づいて、難易度の異なる複数のクライアントパズルを生成し、それら複数のクライアントパズルの各々をSYNメッセージ109の特定の領域(本実施形態では、図2のオプション領域)へ書き込んで送信する。なお、本実施形態では、制御部200は、SYNメッセージ109を送信するとともに、上記複数のクライアントパズルの解とSYNメッセージ109の宛先とを対応付けて揮発性記憶部220aに書き込んでおく。これは、各クライアント装置30から送信されてくる解が正しいか否かを判定するためである。また、本実施形態では、上記コネクション識別子、上記受信時刻データおよびサーバシークレットに基づいて、クライアントパズルを生成する場合について説明するが、これらのデータのうちの何れかのみを用いて上記クライアントパズルを生成するとしても良く、また、これらのデータに他のデータを加えてクライアントパズルを生成するとしても勿論良い。
ここで、上記複数のクライアントパズルを書き込む特定の領域として、図2のオプション領域を用いる理由は、以下の通りである。非特許文献1や非特許文献2に開示された従来の技術では、図2のシーケンス番号、緊急ポインタおよびウィンドウサイズの各領域にクライアントパズルを書き込むようにしていた。これら3つの領域は、その合計の領域サイズが64ビット(すなわち、8バイト)しかないため、1つのメッセージに1つのクライアントパズルしか書き込むことができず、図12に示すように複数回のメッセージの送信が必要になっていた。
これに対して、図2のオプション領域は、本来、SACKオプションやタイムスタンプオプションの利用の可否を通信相手に通知するためにデータ(以下、付加データ)を書き込むための領域であり、最大で40バイトのデータを格納することができる。このように、本実施形態においては、図2のオプション領域にクライアントパズルを書き込むようにしたため、難易度の異なる複数のクライアントパズルを1つのSYNメッセージ109に書き込んで送信すること、すなわち、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを1つのメッセージで要求することが可能になる。
図5に戻って、上記サーバソフトウェアにしたがって作動している制御部200に付与される第2の機能は、所定の処理の実行を要求する旨のメッセージであって、上記複数のクライアントパズルの何れかの解を表す演算結果データがオプション領域に書き込まれたメッセージを通信IF部210を介してクライアント装置30から受信した場合に、その演算結果データの表す解が正しいか否かを判定する処理(以下、判定処理)を行う機能である。本実施形態では、上記メッセージとしてSYN/ACKメッセージ110(図3参照)が用いられている。このSYN/ACKメッセージ110は、上記SYNメッセージ109をクライアント装置30が受信したことを表すとともに、上記下りのコネクションを確立する処理を実行することを要求する旨のメッセージである。
そして、上記サーバソフトウェアにしたがって作動している制御部200に付与される第3の機能は、クライアント装置30から返信されたクライアントパズルの解が正しい解であると判定した場合に、そのクライアント装置30にて実行された演算の演算量を上記演算結果データに基づいて特定し、その特定結果に応じた優先順位で上記所定の処理(本実施形態では、下りのコネクションを確立する処理)を実行する機能である。
具体的には、制御部200は、難易度の高いクライアントパズルを解いた(すなわち、演算量の多い演算を行った)クライアント装置からのコネクション確立要求ほど優先的に処理する。なお、本実施形態では、難易度の高いクライアントパズルを解いたクライアント装置から要求された処理を優先的に実行する場合について説明するが、逆に、難易度の低いクライアントパズルを解いたクライアント装置から要求された処理を優先的に実行するとしても勿論良い。要は、処理の実行を要求してきたクライアント装置にて行われた演算の演算量に応じた優先順位でその処理を実行する態様であれば、何れの態様であっても良い。
以上に説明したように、サーバ装置20のハードウェア構成は一般的なコンピュータ装置のハードウェア構成と同一である。本実施形態に係るサーバ装置20においては、不揮発性記憶部220bに格納されている各種ソフトウェアにしたがって制御部200を作動させることによって、本発明に係るサーバ装置に特有な3つの機能が実現される。換言すれば、上記サーバソフトウェアは、制御部200を、上記送信処理を行う送信手段と、上記判定処理を行う判定手段と、クライアント装置から実行を要求された処理をそのクライアント装置が行った演算の演算量に応じた優先順位で実行する処理実行手段として機能させるソフトウェアである。このように、本実施形態では、本発明に係るサーバ装置に特有な機能をソフトウェアモジュールで実現する場合について説明したが、これらソフトウェアモジュールと同一の機能を担っているハードウェアモジュールを用いてサーバ装置20を構成しても良いことは勿論である。すなわち、上記送信手段、判定手段および処理実行手段の各々をハードウェアモジュールで実現し、これら各手段を図5に示すフローチャートにしたがって作動させるように構成して本発明に係るサーバ装置を実現するとしても勿論良い。
(A−3:クライアント装置30の構成)
次いで、図6を参照しつつクライアント装置30の構成を説明する。図6に示されているように、クライアント装置30のハードウェア構成がサーバ装置20のハードウェア構成と異なっている点は、制御部200、通信IF部210、記憶部220およびバス230に代えて、制御部300、通信IF部310、記憶部320およびバス330を設けた点である。なお、記憶部320の内部には、揮発性記憶部220aおよび不揮発性記憶部220bに代えて揮発性記憶部320aおよび不揮発性記憶部320bが設けられている。つまり、クライアント装置30も、サーバ装置20と同様に一般的なコンピュータ装置と同一のハードウェア構成を有している。
さて、不揮発性記憶部320bには、クライアント装置30に固有のデータおよびソフトウェアが格納されている。具体的には、不揮発性記憶部320bには上記複数のサーバシークレットに代えて、このクライアント装置30の処理能力を表す閾値データが格納されている。詳細については後述するが、この閾値データは、サーバ装置20から送信された複数のクライアントパズルのうち、その何れを解くかを選択する際に用いられるデータである。また、不揮発性記憶部320bには、上述したOSソフトウェアの他に、本発明に係るクライアント装置に特有な機能を制御部300に実現させるためのクライアントソフトウェアが上記サーバソフトウェアに代えて格納されている。以下、これらのソフトウェアを実行することによって制御部300に付与される機能について説明する。
クライアント装置30の電源(図示省略)が投入されると、制御部300は、まず、OSソフトウェアを不揮発性記憶部320bから読み出し実行する。OSソフトウェアにしたがって作動しOSを実現している状態の制御部300には、クライアント装置30の各部を制御する機能やユーザの指示に応じて他のソフトウェアを不揮発性記憶部320bから読み出し実行する機能が付与される。例えば、上記クライアントソフトウェアの実行を指示されると、制御部300は、上記クライアントソフトウェアを不揮発性記憶部320bから読み出し、これを実行する。そして、OSの制御下で、このクライアントソフトウェアにしたがって作動している制御部300には、図7に示すフローチャートにしたがってサーバ装置20とコネクションを確立する機能が付与される。以下、クライアントソフトウェアにしたがって作動している制御部300に付与される3つの機能について説明する。
上記クライアントソフトウェアにしたがって作動している制御部300に付与される第1の機能は、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージ(本実施形態では、図3のSYNメッセージ109)を受信した場合に、それら複数の演算の各々の演算量を特定し、実行するべき演算をその特定結果に応じて選択する処理(以下、選択処理)を行う機能である。具体的には、制御部300は、サーバ装置20から送信されたSYNメッセージ109を受信した場合に、そのSYNメッセージ109に書き込まれている複数のクライアントパズルと上記閾値データとに基づいて、これら複数のクライアントパズルのうちから、解くべきクライアントパズルを1つ選択する。
上記クライアントソフトウェアにしたがって作動している制御部300に付与される第2の機能は、上記選択処理にて選択した演算を実行する機能である。すなわち、本実施形態では、制御部300は、上記選択処理にて選択したクライアントパズルを解き、その解を取得する。そして、第3に、所定の処理の実行を要求する旨のメッセージに、上記演算結果(すなわち、上記クライアントパズルの解)を表す演算結果データを書き込んで送信する機能である。本実施形態では、制御部300は、SYNメッセージ109を受信したことを表すとともに下りのコネクションの確立を要求する旨のSYN/ACKメッセージ110のオプション領域(図2参照)に上記演算結果データを書き込んで送信する。
以上に説明したように、本実施形態に係るクライアント装置30においては、不揮発性記憶部320bに格納されている各種ソフトウェアにしたがって制御部300を作動させることによって、本発明に係るクライアント装置に特有な3つの機能が実現される。換言すれば、上記クライアントソフトウェアは、制御部300を、上記選択処理を行う選択手段と、その選択手段により選択された演算を行う演算実行手段と、所定の処理の実行を要求する旨のメッセージにその演算実行手段の演算結果を書き込んで返信する返信手段として機能させるソフトウェアである。このように、本実施形態では、本発明に係るクライアント装置に特有な機能をソフトウェアモジュールで実現する場合について説明したが、これらソフトウェアモジュールと同一の機能を担っているハードウェアモジュールを用いてクライアント装置を構成しても良いことは勿論である。すなわち、上述した選択手段、演算実行手段および返信手段の各々をハードウェアモジュールで実現し、これら各手段を図7に示すフローチャートにしたがって作動させるように構成して本発明に係るクライアント装置を実現するとしても勿論良い。
(B:動作)
次いで、サーバ装置20とクライアント装置30が行う動作のうち、その特徴を顕著に示す動作について図面を参照しつつ説明する。
クライアント装置30の操作部(図示省略)を介してユーザが所定の操作(サーバ装置20のURLの入力など)を行うと、クライアント装置30の制御部300は、図3に示すようにSYNメッセージ100をサーバ装置20へ送信する。以下、このSYNメッセージ100を受信した場合に、サーバ装置20の制御部200が行う動作について図5を参照しつつ説明する。
制御部200は、図5に示すように、通信IF部210を介してメッセージを受信(ステップSA1)すると、そのメッセージがSYNメッセージであるか、それとも、SYN/ACKメッセージであるか、をそのメッセージの内容に基づいて判定する(ステップSA2)。より詳細に説明すると、制御部200は、そのメッセージのコントロールフラグ(図2参照)にてSYNフラグのみに“1”がセットされている場合には、そのメッセージをSYNメッセージである判定し、SYNフラグの他にACKフラグにも“1”がセットされている場合には、SYN/ACKメッセージと判定する。そして、制御部200は、ステップSA2にてSYNメッセージであると判定した場合には、図5のステップSA3およびステップSA4の処理を行い、逆に、ステップSA2にてSYN/ACKメッセージであると判定した場合には、図5のステップSA5以降の処理を行う。
本動作例では、クライアント装置30からSYNメッセージ100が送信されてくるのであるから、上記ステップSA1で受信したメッセージはSYNメッセージであると上記ステップSA2にて判定され、上記ステップSA3の処理が行われる。このステップSA3においては、制御部200は、難易度の異なる複数のクライアントパズルを生成する。
図8は、制御部200が生成するクライアントパズルを説明するための図である。上記ステップSA3において、制御部200は、まず、ステップSA1にて受信したSYNメッセージ100に書き込まれているコネクション識別子と、そのSYNメッセージを受信した時刻を表す受信時刻データと、不揮発性記憶部220bに格納されている複数のサーバシークレットのうちの何れか1つとを所定のハッシュ関数Hへ入力し、Lビットのハッシュ値Xを得る。次いで、制御部200は、上記ハッシュ値Xを再度ハッシュ関数Hへ入力し、同じくLビットのハッシュ値Yを得る。なお、本実施形態では、ハッシュ値Xとハッシュ値Yとが同一のビット長を有している場合について説明するが両者が異なるビット長を有しているとしても勿論良い。
そして、制御部200は、上記ハッシュ値Xの先頭からkビット(但し、1≦k<L)の部分(以下、X<1、k>と表記する)と上記ハッシュ値Yとの組を1つのクライアントパズルとして生成する。このクライアントパズルは、上記所定のハッシュ関数(本実施形態では、ハッシュ関数H)を用いて上記ハッシュ値Yを得ることができる入力データであって、その先頭からkビット目までは上記X<1、k>に一致する入力データを求める演算を表している。詳細については後述するが、上記クライアントパズルは、X<1、k>のビット長が長い(すなわち、kがLに近い)ほどそのクライアントパズルの解(すなわち、X<k+1、L>)を算出するための演算量は少なくなる。このため、制御部200は、上記kの値を適宜変えて複数のクライアントパズルを生成することによって、難易度の異なる複数のクライアントパズルを生成することができる。また、上記複数のクライアントパズルの各々を生成する際には、各クライアントパズル毎に異なるサーバシークレットを用いるようにしても勿論良い。
図5に戻って、制御部200は、クライアント装置30に対して上りのコネクションの確立を要求する旨のSYNメッセージ109を生成し、上記複数のクライアントパズルの解(本実施形態では、X<k+1、L>)とSYNメッセージ109の宛先とを対応付けて揮発性記憶部220aへ書き込む一方、SYNメッセージ109のオプション領域(図2参照)に上記複数のクライアントパズルを書き込んで送信する(ステップSA4)。その結果、図3に示すように、サーバ装置20からクライアント装置30へSYNメッセージ109が送信されることになる。以下、このSYNメッセージ109を受信した場合に、クライアント装置30の制御部300が行う動作について図7を参照しつつ説明する。
制御部300は、SYNメッセージ109を受信(ステップSB1)すると、そのSYNメッセージ109から、上記複数のクライアントパズルを読み出し、各クライアントパズルの表す演算の演算量と不揮発性記憶部320bに格納されている閾値データとに基づいて、解くべきクライアントパズル(すなわち、実行するべき演算)を選択する(ステップSB2)。本実施形態では、上記複数のクライアントパズルに含まれているX<1、k>およびYのうち、X<1、k>のデータ長(すなわち、k)がそのクライアントパズルの難易度を表している。本実施形態では、制御部300は、上記閾値データの表す値を超えないビット長を有するX<1、k>のうち、最長のビット長を有するX<1、k>を含んでいるクライアントパズルを解くべきクライアントパズルとして特定する。
次いで、制御部300は、ステップSB2にて選択した演算を実行し、その演算結果(すなわち、ステップSB2にて選択したクライアントパズルの解)を取得する(ステップSB3)。具体的には、制御部300は、以下のようにしてクライアントパズルの解を取得する。まず、制御部300は、上記ステップSB2にて選択したクライアントパズルに含まれているX<1、k>に、全てのビットをオフ(すなわち、“0”)にした(L−k)ビットのビット列Wを付加して上記所定のハッシュ関数Hへ入力し、その出力ハッシュ値が上記クライアントパズルのYと一致するか否かを判定する。そして、両者が一致しない場合には、制御部300は、上記ビット列Wの各ビットを1ビットずつオン(すなわち、“1”)にして再度ハッシュ関数Hへ入力し、その出力ハッシュ値と上記Yとが一致するまでこの処理を繰り返し実行する。そして、制御部300は、両者が一致した時点のビット列Wを上記クライアントパズルの解として取得する。
そして、制御部300は、SYNメッセージ109を受信したことを表すとともに、上記下りのコネクションの確立を要求する旨のSYN/ACKメッセージ110を生成し、そのオプション領域に上記演算結果を表す演算結果データ(本実施形態では、上記W)を書き込んでサーバ装置20へ送信する(ステップSB4)。その結果、図5に示すように、上記SYN/ACKメッセージ110がクライアント装置30からサーバ装置20へ送信されることになる。以下、図5に戻って、SYN/ACKメッセージ110を受信した場合に、制御部200が行う動作について説明する。
制御部200、SYN/ACKメッセージ110を通信IF部210を介して受信(ステップSA1)すると、上述したようにステップSA5以降の処理を行う。より詳細に説明すると、制御部200は、まず、クライアント装置30から受信したSYN/ACKメッセージ110のオプション領域に書き込まれている演算結果データの表す演算結果が正しいかい否かを判定する(ステップSA5)。具体的には、制御部200は、SYN/ACKメッセージ110の送信元(すなわち、本実施形態ではSYNメッセージ109)の宛先に対応づけて揮発性記憶部220aに格納されているX<k+1、L>の何れかと上記演算結果データWとが一致するか否かを判定し、一致するX<k+1、L>があった場合に正しい演算結果であると判定する。
そして、制御部200は、ステップSA5の判定結果が“No”である場合には、クライアント装置30からの要求を拒絶することを表すメッセージ(例えば、RSTメッセージ)を送信し(ステップSA8)、本動作を終了する。逆に、ステップSA5の判定結果が“Yes”である場合には、制御部300は、上記演算結果データに基づいて、クライアント装置30にて実行された演算の演算量を特定する(ステップSA6)。本実施形態では、制御部200は、上記演算結果データWのビット長が長い程、演算量が多いと特定する。
そして、制御部200は、ステップSA6にて特定した演算量が多い順に、ステップSA1にて受信したSYN/ACKメッセージに書き込まれているコネクション識別子に基づいて、上記下りのコネクションを確立する(ステップSA7)。その後、制御部200は、上記ステップSA7が完了した後に、上記SYN/ACKメッセージを受信し下りのコネクションを確立したことを表すACK120を送信して本動作を終了する。その結果、図5に示すように、サーバ装置20からクライアント装置30へACK120が送信されることになる。
以降、制御部300は、ACK120を受信すると、そのACK120から上りのコネクションを表すコネクション識別子を読み出し、そのコネクション識別子に基づいて上記上りのコネクションを確立する。これにより、サーバ装置20とクライアント装置30との間に下りおよび上りのコネクションが確立されることになる。
以上、本実施形態によれば、クライアント装置30にて実行された演算の演算量に応じた優先順位でそのクライアント装置との間にコネクションの確立が行われる。このため、以下の効果を奏する。本実施形態に係るサーバ装置20に対して多量のSYNメッセージを送信しSYNFlood攻撃を行うクライアント装置は、送信したSYNメッセージの数分だけクライアントパズルを解かねばならい。このため、上記クライアント装置は、クライアントパズルを解くことに多量のリソースを割り当てねばならず、サーバ装置20から送信されてくるSYNメッセージ109に対するSYN/ACKメッセージ110を短時間で返信することが困難になる。SYN/ACKメッセージ110が送信されてこなければ、サーバ装置20で下りのコネクションの確立が行われることはないので、上記SYNFlood攻撃を防御することが可能になる。
なお、上記クライアント装置が、実際にはクライアントパズルを解かずに、適当な値をクライアントパズルの解として書き込んだSYN/ACKメッセージを送信しても、そのような値がクライアントパズルの解と偶然に一致する確率は極めて低く、下りのコネクションの確立をサーバ装置20に拒絶されてしまう。また、上記サーバ装置20から送信された複数のクライアントパズルのうち、常にその難易度が最も低いものを解いてSYN/ACKメッセージを送信するようにしても、そのようなコネクション確立要求は常に低い優先順位で処理されるため、その確立が常に行われるとは限らない。このように、本実施形態によれば、SYNFlood攻撃を確実に防御することが可能になるといった効果を奏する。
また、本発明によれば、難易度の異なる複数のクライアントパズルが1つのメッセージで一括してクライアント装置30へ送信されるため、クライアント装置30とサーバ装置20との間の通信トラヒックが増加することを回避することができる、といった効果も奏する。
(C:変形例)
以上、本発明を実施するための最良の形態について説明した。しかしながら、以下に述べるような変形を加えても良いことは勿論である。
(C−1:変形例1)
上述した本実施形態では、サーバ装置20とクライアント装置30とが、TCPにしたがって通信するPCである場合について説明したが、TCPにしたがって通信するPDAや携帯電話機であっても良いことは勿論である。要は、TCPにしたがって通信する機能を有するコンピュータ装置であれば、何れであっても良い。また、上述した実施形態では、サーバ装置20とクライアント装置30とがTCPにしたしたがって通信する場合について説明するが、他の通信プロトコルにしたがって通信するとしても良いことは勿論である。
(C−2:変形例2)
上述した実施形態では、SYNメッセージ109に書き込んだ各クライアントパズルの解をそのSYNメッセージ109の宛先に対応付けてサーバ装置20に記憶させておく場合について説明した。しかしながら、以下に説明するような態様のクライアントパズルを用いる場合には、その解をサーバ装置20に記憶させておく必要はない。
図9は、本変形例に係るクライアントパズルを説明するための図である。図9に示されているように、このクライアントパズルは、まず、サーバシークレット、受信時刻データおよび送信元アドレス(すなわち、クライアント装置30のIPアドレス)を所定のハッシュ関数Hへ入力して得られるハッシュ値Nsと、送信先アドレス(すなわち、サーバ装置20のIPアドレス)や送信元および送信先のポート番号と、シーケンス番号の初期値と、あるパラメータZとを上記ハッシュ関数Hへ入力して、先頭から所定ビット長部分が全て0であるハッシュ値を算出することを表している。この場合、クライアント装置30へ送信するべきクライアントパズルは、上記ハッシュ値Nsと、上記所定ビット長を表すデータとの組であり、そのクライアントパズルの解は上記パラメータZである。このぅライアントパズルにおいては、上記所定のビット長がそのクライアントパズルの難易度を表しており、そのビット長が長い程、高い難易度を表している。
図9に示すクライアントパズルを用いる場合には、サーバ装置20は、上記ハッシュ値Nsと上記所定のビット長を表すデータとをクライアントパズルとしてクライアント装置30へ送信すれば良く、そのクライアント装置30から上記クライアントパズルの解Zが送信されてきた時点で、図9に示す演算を実行し、その解が正しいか否かを判定すれば良い。したがって、図9に示すクライアントパズルを用いる場合には、サーバ装置20は、図9に示す演算を予め実行してその解を算出しておく必要はない。要は、各クライアント装置30へ送信したハッシュ値Nsと上記所定のビット長を表すデータとをそのクライアント装置30の通信アドレスに対応付けて記憶しておけば、そのクライアント装置30から返信されてきた解が正しいか否かを判定することができる。このような態様にあっては、SYNメッセージ109を送信することに先立って、クライアントパズルを生成する演算を行う必要がないため、そのSYNメッセージ109を速やかにクライアント装置30へ返信することができるといった効果も奏する。
また、クライアントパズルが表す演算はハッシュ関数を用いた演算に限定されるものではない。例えば、n(n≧3)次方程式や多元1次の連立方程式などの代数方程式の解を求める演算であっても良い。このような場合には、クライアントパズルとして、上記n次方程式や連立方程式を表すデータ(例えば、その代数方程式が3次方程式aX3+bX2+cX+d=0であれば、各係数a、b、cおよびd)を用いれば良い。このような場合には、代数方程式を表す係数の個数がその演算の演算量を表している。
(C−3:変形例3)
上述した実施形態では、サーバ装置から送信された複数のクライアントパズルのうちの何れか1つをクライアント装置に選択させ解かせる場合について説明したが、2つ以上のクライアントパズルを解かせるようにしても勿論良い。そして、2つ以上のクライアントパズルを解いた場合には、それらの解を全てSYN/ACKメッセージ110に書き込んで送信するとしても勿論良い。そして、サーバ装置においては、SYN/ACKメッセージ110に複数の解が書き込まれていた場合には、そのうちの何れか1つ(例えば、難易度が最も高い或いは低いクライアントパズルの解)に基づいて、クライアント装置が実行した演算の演算量を特定するとしても良く、また、それら複数の解に基づいて、クライアント装置が実行した演算の演算量を特定するとしても勿論良い。例えば、複数の解に基づいて上記演算量を特定する態様の一例としては、各解に対応するクライアントパズルの演算量の加算値に基づいて、クライアント装置が行った演算の演算量を特定する態様が挙げられる。
(C−4:変形例4)
上述した実施形態では、クライアント装置30からコネクションの確立を要求された場合に、そのクライアント装置30が解いたクライアントパズルの難易度に応じた優先順位でそのコネクションを確立する場合について説明した。しかしながら、クライアント装置からの要求に応じてサーバ装置が実行する処理は、コネクション確立処理に限定されるものではなく、所定のアルゴリズムにしたがってデータを生成したり、そのデータを記憶(例えば、データベースなどへの格納)したり、そのデータを所定の宛先へ転送したりする処理であっても良い。また、クライアント装置からの要求に応じて所定のデータをそのクライアント装置へ返信する処理であっても良い。
ところで、上述の如く、所定のアルゴリズムにしたがってデータを生成する処理などを行うサーバ装置に本発明を適用した場合には、あるクライアント装置から実行を要求された処理を行っている途中に、そのクライアント装置より演算量の多い演算を行ったクライアント装置から他の処理の実行を要求される場合が起こり得る。このような場合には、システムコール(例えば、Unix(登録商標)におけるniceシステムコール)などによって実行中の処理の優先順位を引き下げ、上記他の処理が優先的に実行されるようにすれば良い。また、上述の如く、コネクションの確立処理以外に本発明を適用する場合には、SYNメッセージ109に代えて、RSTメッセージなどに複数のクライアントパズルを書き込んで送信するようにすれば良い。このように変形することによって、SYNFlood攻撃に対する防御だけでなく、クライアント装置からの要求に応じて任意の処理を行うサーバ装置に、そのクライアント装置が負担した負荷に応じた優先順位でその処理を実行させることが可能になるといった効果をする。
(C−5:変形例5)
上述した実施形態では、クライアント装置30からコネクションの確立を要求する旨のSYNメッセージが送信されてきたことを契機として、難易度の異なる複数のクライアントパズルを一括してそのクライアント装置へ送信する場合について説明した。しかしながら、複数のクライアント装置との間で既にコネクションを確立し、各クライアント装置からの処理要求を待ち受けているサーバ装置に、複数のクライアントパズルを各クライアント装置へ送信させ、そのクライアントパズルの解とともに上記処理要求が送信されてきた場合にのみ、その処理を実行させるようにしても良い。このようにすると、クライアント装置がサーバ装置へ処理要求を行う頻度をそのサーバ装置に制御させることを可能になり、輻輳の発生を事前に回避することが可能になるといった効果を奏する。
これに対して、非特許文献1や非特許文献2に開示された技術では、TCPヘッダのシーケンス番号や緊急ポインタ、およびウィンドウサイズにクライアントパズルを書き込むようにしていたため、このようなことを実現することはできなかった。その理由は、上記シーケンス番号や緊急ポインタには、サーバ装置とクライアント装置とが確立したコネクションを介してデータの送受信を行う度毎に更新されるデータが書き込まれるため、係る領域をクライアントパズルの書き込みに流用することはできないからである。これに対して、TCPオプションフィールドは、コネクションの確立を行う際にのみ、前述した付加データが書き込まれるため、コネクションの確立が完了した後には、係る領域をクライアントパズルの書き込みに流用したとしても何ら問題が発生しないからである。
(C−6:変形例6)
上述した実施形態では、本発明に係るサーバ装置に特有な機能を制御部に実現させるためのソフトウェアを不揮発性記憶部220bに予め格納させておく場合について説明した。しかしながら、例えば、CD−ROM(Compact Disk Read Only Memory)やDVD(Digital Versatile Disk)などのコンピュータ装置が読み取り可能な記録媒体に、上記ソフトウェアを記録しておき、このような記録媒体を用いて一般的なコンピュータ装置に上記ソフトウェアをインストールするとしても良いことは勿論である。このようにすると、既存の通信システムに含まれているサーバ装置を、本発明に係るサーバ装置として機能させることが可能になるといった効果を奏する。同様に、本発明に係るクライアント装置に特有な機能を制御部に実現させるためのソフトウェアを上述の如き記録媒体に記録しておき、この記録媒体を用いて一般的なコンピュータ装置に上記ソフトウェアをインストールするとしても勿論良い。
本発明の1実施形態に係るサーバ装置20およびクライアント装置30を有する通信システムの一例を示す図である。 TCPにしたがって送受信されるメッセージのフォーマットを示す図である。 同クライアント装置30とサーバ装置20とがコネクションを確立する際に行う通信の通信シーケンスの一例を示す図である。 同サーバ装置20のハードウェア構成の一例を示す図である。 同サーバ装置20の制御部200がサーバソフトウェアにしたがって行うコネクション確立処理の流れを示すフローチャートである。 同クライアント装置30のハードウェア構成の一例を示す図である。 同クライアント装置30の制御部300がクライアントソフトウェアにしたがって行うコネクション確立処理の流れを示すフローチャートである。 同サーバ装置20が生成するクライアントパズルを説明するための図である。 変形例2に係るクライアントパズルを説明するための図である。 従来の3ウェイハンドシェークを説明するための図である。 非特許文献1に開示されたクライアントパズルプロトコルを説明するための図である。 非特許文献2に開示されたクライアントパズルオークションを説明するための図である。
符号の説明
10…通信網、20、40A、40B、40C…サーバ装置、30、50A、50B、50C…クライアント装置、200、300…制御部、210、310…通信IF部、220、320…記憶部、220a、320a…揮発性記憶部、220b、320b…不揮発性記憶部、230、330…バス。

Claims (9)

  1. 演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルを複数まとめて書き込んだ第1のメッセージを通信相手の各クライアント装置へ送信する送信手段と、
    所定の処理の実行を要求するとともに前記複数の演算の何れかの演算結果が書き込まれた第2のメッセージが前記各クライアント装置から送信されてきた場合に、該演算結果が正しい演算結果であるか否かを判定する判定手段と、
    前記判定手段により正しい演算結果であると判定された場合に、前記各クライアント装置にて実行された演算の演算量をその演算結果に基づいて特定し、特定された演算量が多い順に、または、特定された演算量が少ない順に、前記各クライアント装置に対応する前記所定の処理を実行する処理実行手段と
    を有するサーバ装置。
  2. 前記送信手段は、
    前記所定の処理の実行を要求する旨のみの第3のメッセージが送信されてきたことを契機として、前記第1のメッセージを該第3のメッセージの送信元であるクライアント装置へ送信する
    ことを特徴とする請求項1に記載のサーバ装置。
  3. 前記第1のメッセージには、その送信元とその宛先とが通信を開始するときにだけデータが書き込まれる特定の領域であって、その送信元の通信態様の詳細をその宛先へ通知するための付加データが書き込まれる特定の領域が設けられており、
    前記送信手段は、
    前記付加データに代えて前記クライアントパズルを前記特定の領域に書き込んで前記第1のメッセージを送信する
    ことを特徴とする請求項1に記載のサーバ装置。
  4. 前記送信手段は、TCP(Transmission Control Protocol)にしたがって前記第1のメッセージを送信し、
    前記特定の領域は、オプション領域である
    ことを特徴とする請求項3に記載のサーバ装置。
  5. 通信手段と、
    制御手段と、
    を備え、
    前記制御手段は、
    演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルを複数まとめて書き込んだ第1のメッセージを前記通信手段によって通信相手の各クライアント装置へ送信する第1の処理と、
    所定の処理の実行を要求するとともに前記複数の演算の何れかの演算結果が書き込まれた第2のメッセージを前記通信手段によって前記各クライアント装置から受信した場合に、該演算結果が正しいか否かを判定する第2の処理と、
    前記第2の処理にて正しい演算結果であると判定された場合に、前記各クライアント装置にて実行された演算の演算量をその演算結果に基づいて特定し、特定された演算量が多い順に、または、特定された演算量が少ない順に、前記各クライアント装置に対応する前記所定の処理を実行する第3の処理と、を行う
    ことを特徴とするサーバ装置。
  6. 演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルが複数まとめて書き込まれた第1のメッセージが通信相手のサーバ装置から送信されてきた場合に、該複数の演算の各々の演算量を該クライアントパズルに基づいて特定し、特定された演算量と予め定められた閾値とに基づいて、実行するべき演算を選択する選択手段と、
    前記選択手段によって選択された演算を実行する演算実行手段と、
    所定の処理の実行を前記サーバ装置へ要求する場合に、該所定の処理の実行の要求と前記演算実行手段による演算結果とを書き込んだ第2のメッセージを前記サーバ装置へ送信する送信手段と
    を有するクライアント装置。
  7. 前記第1のメッセージを受信していない状況下で前記所定の処理の実行を前記サーバ装置へ要求する場合には、前記送信手段は、その旨のみを書き込んだ第3のメッセージを前記サーバ装置へ送信する
    ことを特徴とする請求項6に記載のクライアント装置。
  8. 通信手段と、
    制御手段と、
    を備え、
    前記制御手段は、
    演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルが複数まとめて書き込まれた第1のメッセージを前記通信手段によって通信相手のサーバ装置から受信した場合に、該複数の演算の各々の演算量を該クライアントパズルに基づいて特定し、特定された演算量と予め定められた閾値とに基づいて、実行するべき演算を選択する第1の処理と、
    前記第1の処理にて選択した演算を実行する第2の処理と、
    所定の処理の実行を前記サーバ装置へ要求する場合に、該所定の処理の実行の要求と前記第2の処理にて得られた演算結果とを書き込んだ第2のメッセージを前記通信手段によって前記サーバ装置へ送信する第3の処理と、を行う
    ことを特徴とするクライアント装置。
  9. サーバ装置が、演算量の異なる複数の演算の何れかの実行とその演算結果の返信とを要求する旨のメッセージであって、該複数の演算の各々を表すデータであるクライアントパズルを複数まとめて書き込んだ第1のメッセージを通信相手の各クライアント装置へ送信する第1のステップと、
    前記第1のメッセージを受信したクライアント装置が、前記複数の演算の各々についてその演算量を前記クライアントパズルに基づいて特定し、特定された演算量と予め定められた閾値とに基づいて、実行するべき演算を選択して実行し、その演算結果と所定の処理の実行を要求する旨とを書き込んだ第2のメッセージを前記サーバ装置へ送信する第2のステップと、
    前記第2のメッセージを受信したサーバ装置が、該第2のメッセージに書き込まれている演算結果が正しい演算結果であるか否かを判定し、正しい演算結果であると判定された場合に、該第2のメッセージの送信元であるクライアント装置にて実行された演算の演算量をその演算結果に基づいて特定し、特定された演算量が多い順に、または、特定された演算量が少ない順に、前記各クライアントに対応する前記所定の処理を実行する第3のステップと
    を有することを特徴とする処理実行方法。
JP2004245433A 2004-08-25 2004-08-25 サーバ装置、クライアント装置および処理実行方法 Expired - Fee Related JP4555025B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004245433A JP4555025B2 (ja) 2004-08-25 2004-08-25 サーバ装置、クライアント装置および処理実行方法
CN200510091656.XA CN1741530B (zh) 2004-08-25 2005-08-11 服务器设备、客户机设备以及处理执行方法
EP05018258A EP1635530B1 (en) 2004-08-25 2005-08-23 Apparatus and method for mitigating DoS attacks in a service discovery system
DE602005005753T DE602005005753T2 (de) 2004-08-25 2005-08-23 Vorrichtung und Verfahren zur Entschärfung von DoS-Attacken in einem Diensterkennungssystem
US11/210,719 US8001188B2 (en) 2004-08-25 2005-08-24 Server device, client device, and process execution method

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2006065492A JP2006065492A (ja) 2006-03-09
JP4555025B2 true JP4555025B2 (ja) 2010-09-29

Family

ID=35559486

Family Applications (1)

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

Country Status (5)

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

Families Citing this family (53)

* 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
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing 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
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
US9106561B2 (en) 2012-12-06 2015-08-11 A10 Networks, Inc. Configuration of a virtual service network
EP2901308B1 (en) 2012-09-25 2021-11-03 A10 Networks, Inc. Load distribution in data networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling 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 (en) * 2013-03-15 2019-11-27 Robert Bosch GmbH System and method for mitigation of denial of service attacks in networked computing systems
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
WO2014179753A2 (en) * 2013-05-03 2014-11-06 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
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
US8806011B1 (en) 2014-01-06 2014-08-12 Cloudflare, Inc. Transparent bridging of transmission control protocol (TCP) connections
US8984635B1 (en) * 2014-01-06 2015-03-17 Cloudflare, Inc. Authenticating the identity of initiators of TCP connections
DE102014205331A1 (de) * 2014-03-21 2015-09-24 Siemens Aktiengesellschaft Sender zum Senden einer Nachricht und Empfänger zum Empfangen einer Nachricht
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US10020979B1 (en) 2014-03-25 2018-07-10 A10 Networks, Inc. Allocating resources in multi-core computing environments
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
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
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
CN107534642B (zh) * 2015-04-16 2020-11-10 瑞典爱立信有限公司 用于对用在客户端和服务器之间的通信中的计算难题进行建立的方法和设备
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4555025B2 (ja) サーバ装置、クライアント装置および処理実行方法
EP1622334B1 (en) Server device, method for controlling a server device, and method for establishing a connection using the server device
US9100370B2 (en) Strong SSL proxy authentication with forced SSL renegotiation against a target server
US7089587B2 (en) ISCSI target offload administrator
US7882251B2 (en) Routing hints
US8200957B1 (en) Using SYN-ACK cookies within a TCP/IP protocol
US20080077788A1 (en) Secure Tunnel Over HTTPS Connection
JP2006279394A (ja) セッション中継装置、セッション中継方法およびプログラム
US20060161667A1 (en) Server apparatus, communication control method and program
TWI253825B (en) Dynamic configuration of IPSEC tunnels
WO2007052527A1 (ja) 無線通信システム、通信装置、及び中継装置
TWI337822B (en) Processor-accessible media, device, apparatus, network gateway, and method for routing hints
JP2006203537A (ja) ネットワーク伝送装置およびネットワーク伝送方法
US10868870B2 (en) System and method of providing secure data transfer
JP2016038881A (ja) 通信システム、方法及びプログラム
JP4013920B2 (ja) 通信システム、通信装置及びその動作制御方法並びにプログラム
JP3911697B2 (ja) ネットワーク接続機器、ネットワーク接続方法、ネットワーク接続用プログラムおよびそのプログラムを記憶した記憶媒体
Lever Bidirectional Remote Procedure Call on RPC-over-RDMA Transports
US20080289004A1 (en) Method and Module for Protecting Against Attacks in a High-Speed Network
US10432583B1 (en) Routing agent platform with a 3-tier architecture for diameter communication protocol in IP networks
JP3972335B2 (ja) ネットワーク接続機器、通信方法、プログラムおよびプログラムを記憶した記憶媒体
JP4418409B2 (ja) プレミアパケット識別装置、端末装置、プレミアパケット識別システムおよびプレミアパケット識別方法
JP2000278258A (ja) 共通鍵交換方法
JP2006246155A (ja) 通信装置、通信方法及びプログラム
Lever RFC 8167: Bidirectional Remote Procedure Call on RPC-over-RDMA Transports

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100427

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100625

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100713

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100715

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130723

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4555025

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees