(57)【要約】【課題】増幅サービス不能攻撃を防止するサーバ装置を提供する。【解決手段】アドレスとドメイン名を含む第１メッセージを受信する受信部１０１と、アドレスに依存する第１識別情報を算出する算出部１０４と、第１識別情報を関連づけたドメイン名と再送情報を含む第１応答メッセージを生成する生成部１０２と、第１応答メッセージを送信する送信部１０５とを備え、受信部１０１はアドレスと第１識別情報を関連づけたドメイン名を含む第２メッセージを受信し、算出部１０４は第２メッセージ内のアドレスに基づいて第２識別情報を算出し、第１識別情報と第２識別情報に基づいてクライアントの正当性を判断する判断部１０３を備え、生成部１０２はクライアントが正当であると判断された場合に、ドメイン名に対応するアドレスを含む第２応答メッセージを生成し、送信部１０５は生成された第２応答メッセージを送信する。【選択図】        図２
2008109483.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続されたクライアント装置から、前記クライアント装置のアドレスと、問い合わせの内容を表す問い合わせ情報とを含む第１問い合わせメッセージを受信する第１受信部と、
受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた第１識別情報を算出する第１算出部と、
算出された前記第１識別情報を前記問い合わせ情報に関連づけ、前記第１識別情報を関連づけた前記問い合わせ情報と、再度問い合わせるべきことを表す再送情報とを含む第１応答メッセージを生成する第１生成部と、
生成された前記第１応答メッセージを前記クライアント装置に送信する第１送信部と、
前記アドレスと、前記第１識別情報が関連づけられた前記問い合わせ情報とを含む第２問い合わせメッセージを前記クライアント装置から受信する第２受信部と、
受信した前記第２問い合わせメッセージに含まれる前記アドレスに基づいた第２識別情報を算出する第２算出部と、
受信した前記第２問い合わせメッセージに含まれる前記問い合わせ情報に関連づけられた前記第１識別情報と算出した前記第２識別情報とに基づいて、前記第２問い合わせメッセージを送信した前記クライアント装置の正当性を判断する判断部と、
前記クライアント装置が正当であると判断された場合に、前記問い合わせ情報に対する応答を含む第２応答メッセージを生成する第２生成部と、
生成された前記第２応答メッセージを前記クライアント装置に送信する第２送信部と、
を備えたことを特徴とするサーバ装置。
【請求項２】
前記第１算出部は、受信した前記第１問い合わせメッセージに含まれる前記アドレスと予め定められた鍵情報とに基づいた前記第１識別情報を算出し、
前記第２算出部は、受信した前記第２問い合わせメッセージに含まれる前記アドレスと前記鍵情報とに基づいた前記第２識別情報を算出すること、
を特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記第１算出部は、受信した前記第１問い合わせメッセージに含まれる前記問い合わせ情報と、受信した前記第１問い合わせメッセージに含まれる前記アドレスと、前記鍵情報とに基づいた前記第１識別情報を算出し、
前記第２算出部は、受信した前記第２問い合わせメッセージに含まれる前記問い合わせ情報と、受信した前記第２問い合わせメッセージに含まれる前記アドレスと、前記鍵情報とに基づいた前記第２識別情報を算出すること、
を特徴とする請求項２に記載のサーバ装置。
【請求項４】
前記第１算出部は、予め定められたハッシュ関数により、受信した前記第１問い合わせメッセージに含まれる前記アドレスのハッシュ値である前記第１識別情報を算出し、
前記第２算出部は、前記ハッシュ関数により、受信した前記第２問い合わせメッセージに含まれる前記アドレスのハッシュ値である前記第２識別情報を算出し、
前記判断部は、受信した前記第２問い合わせメッセージに含まれる前記問い合わせ情報に関連づけられた前記第１識別情報と算出した前記第２識別情報とが一致する場合に、前記第２問い合わせメッセージを送信した前記クライアント装置が正当であると判断すること、
を特徴とする請求項１に記載のサーバ装置。
【請求項５】
前記第１問い合わせメッセージを受信したときに、前記第１問い合わせメッセージに含まれる前記問い合わせ情報に対する応答を含む第３応答メッセージを生成する第３生成部をさらに備え、
前記判断部は、生成された前記第３応答メッセージのデータサイズが予め定められた閾値より大きいか否かをさらに判断し、
前記第１算出部は、前記データサイズが前記閾値より大きいと判断された場合に、受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた前記第１識別情報を算出し、
前記第１生成部は、前記データサイズが前記閾値より大きいと判断された場合に、前記第１応答メッセージを生成し、
前記第１送信部は、前記データサイズが前記閾値より大きいと判断された場合に、生成された前記第１応答メッセージを前記クライアント装置に送信すること、
を特徴とする請求項１に記載のサーバ装置。
【請求項６】
前記第１送信部は、前記データサイズが前記閾値より大きくないと判断された場合に、生成された前記第３応答メッセージを前記クライアント装置に送信すること、
を特徴とする請求項５に記載のサーバ装置。
【請求項７】
前記第１受信部は、ＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）で名前解決を要求するドメイン名を前記問い合わせ情報として含む前記第１問い合わせメッセージを受信し、
前記第１生成部は、ＤＮＳのＣＮＡＭＥレコードを前記再送情報として含む前記第１応答メッセージを生成すること、
を特徴とする請求項１に記載のサーバ装置。
【請求項８】
前記第１生成部は、予め定められた付加情報を前記第１識別情報に付加した前記ドメイン名を前記ドメイン名に対応する標準名として含む前記ＣＮＡＭＥレコードを前記再送情報として含む前記第１応答メッセージを生成すること、
を特徴とする請求項７に記載のサーバ装置。
【請求項９】
前記第２生成部は、前記第１識別情報と前記第２識別情報とが一致すると判断された場合に、受信した前記第２問い合わせメッセージに含まれる前記ＣＮＡＭＥレコードに含まれる前記標準名から前記ドメイン名を取得し、取得した前記ドメイン名に対する応答を含む前記第２応答メッセージを生成すること、
を特徴とする請求項８に記載のサーバ装置。
【請求項１０】
クライアント装置にネットワークを介して接続されたサーバ装置におけるサービス不能攻撃に対する攻撃防止方法であって、
第１受信部によって、前記クライアント装置から、前記クライアント装置のアドレスと、問い合わせの内容を表す問い合わせ情報とを含む第１問い合わせメッセージを受信する第１受信ステップと、
第１算出部によって、受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた第１識別情報を算出する第１算出ステップと、
第１生成部によって、算出された前記第１識別情報を前記問い合わせ情報に関連づけ、前記第１識別情報を関連づけた前記問い合わせ情報と、再度問い合わせるべきことを表す再送情報とを含む第１応答メッセージを生成する第１生成ステップと、
第１送信部によって、生成された前記第１応答メッセージを前記クライアント装置に送信する第１送信ステップと、
第２受信部によって、前記アドレスと、前記第１識別情報が関連づけられた前記問い合わせ情報とを含む第２問い合わせメッセージを前記クライアント装置から受信する第２受信ステップと、
第２算出部によって、受信した前記第２問い合わせメッセージに含まれる前記アドレスに基づいた第２識別情報を算出する第２算出ステップと、
判断部によって、受信した前記第２問い合わせメッセージに含まれる前記問い合わせ情報に関連づけられた前記第１識別情報と算出した前記第２識別情報とに基づいて、前記第２問い合わせメッセージを送信した前記クライアント装置の正当性を判断する判断ステップと、
第２生成部によって、前記クライアント装置が正当であると判断された場合に、前記問い合わせ情報に対する応答を含む第２応答メッセージを生成する第２生成ステップと、
第２送信部によって、生成された前記第２応答メッセージを前記クライアント装置に送信する第２送信ステップと、
を備えたことを特徴とする攻撃防止方法。
【請求項１１】
第３生成部によって、前記第１問い合わせメッセージを受信したときに、前記第１問い合わせメッセージに含まれる前記問い合わせ情報に対する応答を含む第３応答メッセージを生成する第３生成ステップをさらに備え、
前記判断ステップは、生成された前記第３応答メッセージのデータサイズが予め定められた閾値より大きいか否かをさらに判断し、
前記第１算出ステップは、前記データサイズが前記閾値より大きいと判断された場合に、受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた前記第１識別情報を算出し、
前記第１生成ステップは、前記データサイズが前記閾値より大きいと判断された場合に、前記第１応答メッセージを生成し、
前記第１送信ステップは、前記データサイズが前記閾値より大きいと判断された場合に、生成された前記第１応答メッセージを前記クライアント装置に送信すること、
を特徴とする請求項１０に記載の攻撃防止方法。
【請求項１２】
クライアント装置にネットワークを介して接続されたサーバ装置におけるサービス不能攻撃に対する攻撃防止プログラムであって、
前記クライアントから、前記クライアント装置のアドレスと、問い合わせの内容を表す問い合わせ情報とを含む第１問い合わせメッセージを受信する第１受信手順と、
受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた第１識別情報を算出する第１算出手順と、
算出された前記第１識別情報を前記問い合わせ情報に関連づけ、前記第１識別情報を関連づけた前記問い合わせ情報と、再度問い合わせるべきことを表す再送情報とを含む第１応答メッセージを生成する第１生成手順と、
生成された前記第１応答メッセージを前記クライアント装置に送信する第１送信手順と、
前記アドレスと、前記第１識別情報が関連づけられた前記問い合わせ情報とを含む第２問い合わせメッセージを前記クライアント装置から受信する第２受信手順と、
受信した前記第２問い合わせメッセージに含まれる前記アドレスに基づいた第２識別情報を算出する第２算出手順と、
受信した前記第２問い合わせメッセージに含まれる前記問い合わせ情報に関連づけられた前記第１識別情報と算出した前記第２識別情報とに基づいて、前記第２問い合わせメッセージを送信した前記クライアント装置の正当性を判断する判断手順と、
前記クライアント装置が正当であると判断された場合に、前記問い合わせ情報に対する応答を含む第２応答メッセージを生成する第２生成手順と、
生成された前記第２応答メッセージを前記クライアント装置に送信する第２送信手順と、
をコンピュータに実行させる攻撃防止プログラム。
【請求項１３】
前記第１問い合わせメッセージを受信したときに、前記第１問い合わせメッセージに含まれる前記問い合わせ情報に対する応答を含む第３応答メッセージを生成する第３生成手順をさらに備え、
前記判断手順は、生成された前記第３応答メッセージのデータサイズが予め定められた閾値より大きいか否かをさらに判断し、
前記第１算出手順は、前記データサイズが前記閾値より大きいと判断された場合に、受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた前記第１識別情報を算出し、
前記第１生成手順は、前記データサイズが前記閾値より大きいと判断された場合に、前記第１応答メッセージを生成し、
前記第１送信手順は、前記データサイズが前記閾値より大きいと判断された場合に、生成された前記第１応答メッセージを前記クライアント装置に送信すること、
を特徴とする請求項１２に記載の攻撃防止プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、問い合わせの送信元を詐称したパケットによって増幅された応答パケットを送信することで引き起こされるサービス不能攻撃を防止するサーバ装置、方法およびプログラムに関するものである。
【背景技術】
【０００２】
ＤＮＳ（Domain Name System）は、ホスト名とＩＰ（Internet Protocol）アドレスとの対応付けを提供するサーバ・クライアント型のデータベースシステムであり、インターネットにおける基幹機能の一つである。通常、ＤＮＳのクライアントは、特定のドメイン名（ホスト名など）を含む問い合わせのパケットをサーバ宛に送信し、サーバがそれを処理して該当するデータ（リソースレコードもしくは単にレコードと呼ばれる）を含む応答パケットをクライアントに返送する。
【０００３】
一般にＤＮＳでは、サーバはクライアントを認証せずに応答パケットを返す。すなわち、サーバはどのようなクライアントに対しても同等の応答を行う。特に、権威（authoritative）サーバと呼ばれるＤＮＳサーバは、原則としてインターネット上のすべてのクライアントからの問い合わせに応答する必要がある。
【０００４】
現在、このような権威サーバに対するサービス不能攻撃が問題となっている。この攻撃手法では、攻撃ノードは、まず、送信元アドレスを被害ノードであるかのように装った問い合わせパケットをサーバに送信する。その際、攻撃ノードは、サーバからの応答のサイズが問い合わせパケットのサイズに比べて十分に大きくなるようなドメイン名およびリソースレコードを選ぶ。一般に、ＤＮＳの応答パケットは問い合わせパケットに比べて大きくなることが多い。特に、ＥＤＮＳ０（Extension Mechanisms for DNS）技術や、ＤＮＳＳＥＣ（DNS Security Extensions）技術を利用している場合には、応答メッセージが送信メッセージの１０倍以上となることもある。
【０００５】
サーバは応答パケットを問い合わせパケットの送信元アドレスに向けて送信する。ここで、送信元パケットのアドレスが詐称されているため、応答パケットは被害ノードに向けて送信されることになる。また、応答パケットのサイズが問い合わせパケットに比べて大きいことから、攻撃ノードは、より少ない帯域でより大きな被害を生じさせられる。例えば、応答メッセージのサイズが問い合わせメッセージサイズの１０倍であり、攻撃ノードが利用可能なネットワーク帯域が１０Ｍｂｐｓであるとすると、この攻撃手法では実質的に１００Ｍｂｐｓの帯域を利用した場合と同等の被害が生じる。
【０００６】
このようなサービス不能攻撃を防止するために種々の技術が提案されている。例えば、非特許文献１では、送信元アドレスを詐称した問い合わせを防ぐために、アドレスベースによる問い合わせのフィルタを用いる技術が提案されている。この方法では、サーバが受け付ける問い合わせの送信元アドレスを所定の範囲内（通常はそのサーバが属する組織内）に限定することにより、攻撃が可能となるネットワーク上の範囲を制限している。しかし、この方法は、任意のクライアントからの問い合わせに答える必要がある権威サーバでは利用できない。
【０００７】
一方、非特許文献２では、ＤＮＳのプロトコルを拡張し、サーバとクライアントの間でクッキー情報をやり取りすることで、送信元アドレスを偽った問い合わせに無条件で応答しないようにする技術が提案されている。
【０００８】
【非特許文献１】J. Damas et.al.、 "Preventing Use of Recursive Nameservers in Reflector Attacks"、 [online]、 retrieved from the Internet: <URL: http://www.ietf.org/internet-drafts/draft-ietf-dnsop-reflectors-are-evil-02.txt>
【非特許文献２】Donald E. Eastlake 3rd、 "Domain Name System （DNS） Cookies"、 [online]、 retrieved from the Internet: <URL: http://www.ietf.org/internet-drafts/draft-eastlake-dnsext-cookies-00.txt>
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、非特許文献２の方法は、権威サーバの場合にも適用可能であるが、クライアント側でも同様の方式に対応する必要があるという問題があった。したがって、現在インターネット上に多数存在する既存のクライアントのほとんどすべてが同方式に対応するまでは事実上利用不可能であるという問題があった。
【００１０】
本発明は、上記に鑑みてなされたものであって、クライアント側の実装を変更せずに、増幅サービス不能攻撃を防止することができるサーバ装置、攻撃防止方法および攻撃防止プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、ネットワークを介して接続されたクライアント装置から、前記クライアント装置のアドレスと、問い合わせの内容を表す問い合わせ情報とを含む第１問い合わせメッセージを受信する第１受信部と、受信した前記第１問い合わせメッセージに含まれる前記アドレスに基づいた第１識別情報を算出する第１算出部と、算出された前記第１識別情報を前記問い合わせ情報に関連づけ、前記第１識別情報を関連づけた前記問い合わせ情報と、再度問い合わせるべきことを表す再送情報とを含む第１応答メッセージを生成する第１生成部と、生成された前記第１応答メッセージを前記クライアント装置に送信する第１送信部と、前記アドレスと、前記第１識別情報が関連づけられた前記問い合わせ情報とを含む第２問い合わせメッセージを前記クライアント装置から受信する第２受信部と、受信した前記第２問い合わせメッセージに含まれる前記アドレスに基づいた第２識別情報を算出する第２算出部と、受信した前記第２問い合わせメッセージに含まれる前記問い合わせ情報に関連づけられた前記第１識別情報と算出した前記第２識別情報とに基づいて、前記第２問い合わせメッセージを送信した前記クライアント装置の正当性を判断する判断部と、前記クライアント装置が正当であると判断された場合に、前記問い合わせ情報に対する応答を含む第２応答メッセージを生成する第２生成部と、生成された前記第２応答メッセージを前記クライアント装置に送信する第２送信部と、を備えたことを特徴とする。
【００１２】
また、本発明は、上記装置を実行することができる方法およびプログラムである。
【発明の効果】
【００１３】
本発明によれば、クライアント側の実装を変更せずに、増幅サービス不能攻撃を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかるサーバ装置、攻撃防止方法および攻撃防止プログラムの最良な実施の形態を詳細に説明する。
【００１５】
本実施の形態にかかるサーバ装置は、クライアントからの最初の問い合わせにすぐに応答せず、リダイレクト用の応答メッセージを返信し、当該応答メッセージに対してクライアントから再度送信された問い合わせに対して応答を返すものである。このとき、リダイレクト用の応答メッセージに、送信元アドレスに依存する情報を含ませ、再度送信された問い合わせ時に当該情報を用いて正当なクライアントからの問い合わせであるか否かを判定する。
【００１６】
以下では、クライアントからの問い合わせに対して応答を返信するサーバ装置として、ＤＮＳサーバを用いた例について説明する。なお、適用可能な装置はＤＮＳサーバに限られるものではなく、問い合わせに対して応答を返信する機能を有することにより、サービス不能攻撃の対象となりうる装置であればあらゆる装置に適用できる。
【００１７】
図１は、本実施の形態にかかるサーバ装置であるＤＮＳサーバ１００を含むネットワーク構成を示す説明図である。同図に示すように、ＤＮＳサーバ１００は、インターネット５００を介して、ＤＮＳの問い合わせを行うクライアントノード２００と、被害ノード３００と、攻撃ノード４００とに接続されている。なお、被害ノード３００および攻撃ノード４００は、クライアントノード２００のうち、特にサービス不能攻撃の被害者となるノードおよび攻撃を行うノードをそれぞれ表す。以下では、攻撃元と攻撃先とを特定しない場合は、問い合わせを行うノードを単にクライアントノード２００という。
【００１８】
ＤＮＳサーバ１００は「foo.example」というＤＮＳゾーン（ドメイン空間の部分集合のうち、ある特定のサーバ群が管理する領域）を管理していると仮定する。また、ＤＮＳサーバ１００には、増幅サービス不能攻撃を防止するための判断に用いる一定の閾値が記憶部（図示せず）に記憶されている。この閾値としては、例えば、応答パケットのサイズが問い合わせパケットの５倍以上であることといった条件を用いる。また、閾値の別な例として、応答パケットのサイズが問い合わせパケットのサイズよりも大きいこと、という条件を利用することもできる。
【００１９】
このような閾値を用いて、閾値を越える場合にのみ攻撃を防止する処理を行うことにより、有効でない攻撃に対する無用な攻撃防止処理の実行を回避することができる。
【００２０】
ここで、「foo.example」ゾーンには「www」と「zzz」という２つのドメイン名が含まれ、「www.foo.example」に対応する応答メッセージのサイズは十分に大きく、「zzz.foo.example」に対応するメッセージのサイズは十分小さいものとする。特に、「www.foo.example」に関する典型的な問い合わせメッセージのサイズに対し、その応答は上述の閾値によりサービス不能攻撃防止の対象になるものとする。一方、「zzz.foo.example」に関する典型的な問い合わせメッセージのサイズに対し、その応答は上述の閾値によりサービス不能攻撃防止の対象にならないものとする。
【００２１】
図２は、本実施の形態にかかるＤＮＳサーバ１００の構成を示すブロック図である。同図に示すように、ＤＮＳサーバ１００は、鍵情報記憶部１２１と、ＤＮＳデータ記憶部１２２と、受信部１０１と、生成部１０２と、判断部１０３と、算出部１０４と、送信部１０５と、を備えている。
【００２２】
鍵情報記憶部１２１は、ＤＮＳサーバ１００の管理者のみが知る秘密鍵（Secret Key）Ｋを記憶するものである。後述するように、この秘密鍵Ｋは、ＤＮＳのＣＮＡＭＥレコードを利用した問い合わせのリダイレクトメッセージを生成する際に参照される。秘密鍵Ｋとしては、例えば１２８ビットの整数値を用いることができる。
【００２３】
ＤＮＳデータ記憶部１２２は、ＤＮＳサーバ１００が提供するＤＮＳゾーンのデータを保持するものである。ＤＮＳデータ記憶部１２２は、他のＤＮＳサーバから得たゾーンのデータをキャッシュとして保持している場合もある。
【００２４】
なお、鍵情報記憶部１２１およびＤＮＳデータ記憶部１２２は、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカード、ＲＡＭ（Random Access Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００２５】
受信部１０１は、クライアントノード２００から各種メッセージを受信するものである。具体的には、受信部１０１は、名前解決を要求するドメイン名を含むＤＮＳの問い合わせメッセージをクライアントノード２００から受信する。問い合わせメッセージは、従来から用いられているＤＮＳパケットと同様であり、送信元であるクライアントノード２００のＩＰアドレス（送信元ＩＰアドレス）が含まれる。
【００２６】
生成部１０２は、受信した問い合わせメッセージに対する応答メッセージを生成するものである。具体的には、生成部１０２は、受信した問い合わせメッセージが通常のＤＮＳの問い合わせメッセージである場合は、別の問い合わせ名で再度問い合わせることを表す再送情報を含むリダイレクト用の応答メッセージを生成する。本実施の形態では、ＤＮＳのＣＮＡＭＥレコードを再送情報として含む応答メッセージを、リダイレクト用の応答メッセージとして利用する。
【００２７】
ＣＮＡＭＥレコードとは、ＤＮＳサーバ１００から返信される応答メッセージに含まれうるレコードの１つであり、「問い合わせられたドメイン名（Ａ）  ＣＮＡＭＥ  Ａの正式なドメイン名（標準名）」の形式で表される。ＤＮＳの仕様では、ＣＮＡＭＥレコードを含む応答メッセージを受信したクライアントノード２００は、標準名で再度問い合わせを行うことが規定されている。
【００２８】
生成部１０２は、送信元ＩＰアドレス、ドメイン名、および秘密鍵Ｋから算出されるハッシュ値を含むように編集したドメイン名を標準名として含むリダイレクト用の応答メッセージを生成する。なお、ハッシュ値は後述する算出部１０４が算出した値を用いる。
【００２９】
例えば、生成部１０２は、問い合わせられたドメイン名が「www.foo.example」である場合、「www.foo.example. CNAME rcnamewww.XXXX.foo.example.」のような形式のＣＮＡＭＥレコードを含む応答メッセージを生成する。ここで、「rcname」はリダイレクト用のＣＮＡＭＥで用いる名前であることを示す文字列である。「rcname」に続く「www」は、問い合わせられた名前のfoo.exampleドメインにおけるラベルである。「rcname」は、それに続くラベルと組み合せた結果（この場合には「rcnamewww」）が「foo.example」ゾーン内に登録されている他のドメイン名のいずれとも異なるという条件を満たしていればその選択方法は任意である。ある固定されたゾーン内に含まれるドメイン名の個数は有限であるから、このような文字列は常に選択可能である。なお、上記ＣＮＡＭＥレコード内の「XXXX」は、上述のハッシュ値に対応する文字列を表している。
【００３０】
一方、生成部１０２は、受信した問い合わせメッセージが、標準名で再度名前解決を要求した問い合わせメッセージ（以下、リダイレクトメッセージという。）である場合に、名前解決した結果であるリソースレコードを含む応答メッセージを生成する。具体的には、生成部１０２は、後述する判断部１０３の判断結果に応じて、標準名である編集したドメイン名の編集元となったドメイン名に対応するリソースレコードをＤＮＳデータ記憶部１２２から取得して、取得したリソースレコードを応答として返すＤＮＳの応答メッセージを生成する。
【００３１】
なお、生成部１０２は、算出したハッシュ値をリダイレクト用の問い合わせ名内に埋め込んで応答メッセージを生成する代わりに、算出したハッシュ値を所定の領域に格納した応答メッセージを生成するように構成してもよい。この場合、クライアントノード２００は、応答メッセージの当該領域からハッシュ値を取得し、取得したハッシュ値を問い合わせメッセージの所定の領域に格納してＤＮＳサーバ１００に送信する。また、ＤＮＳサーバ１００は、問い合わせメッセージの当該領域からハッシュ値を取得し、再計算したハッシュ値との比較に利用する。
【００３２】
判断部１０３は、受信した問い合わせメッセージがリダイレクトメッセージであるか否かを判断するとともに、リダイレクトメッセージである場合は、当該リダイレクトメッセージの正当性を鍵情報記憶部１２１に記憶された秘密鍵Ｋの情報を用いて判断するものである。正当性判断の具体的方法については後述する。
【００３３】
また、判断部１０３は、応答メッセージのデータサイズが上述の閾値より大きいか否かを判断する。閾値より大きい場合にのみリダイレクト用の応答メッセージを生成するためである。
【００３４】
算出部１０４は、受信した問い合わせメッセージに含まれる送信元ＩＰアドレスおよびドメイン名と、秘密鍵Ｋから、予め定められた一方向性のハッシュ関数を用いてハッシュ値を算出するものである。このハッシュ値は、送信元のクライアントノード２００の送信元ＩＰアドレスをハッシュキーとして用いるため、正当なクライアントノード２００であるか否かを識別可能な識別情報として利用することができる。また、ＤＮＳサーバ１００の管理者のみが知る秘密鍵Ｋを用いるため、攻撃ノード４００によって推測されることを回避できる。
【００３５】
なお、ハッシュ関数としては、ＭＤ５（Message Digest 5）、ＳＨＡ１（Secure Hash Algorithm 1）などの従来から用いられているあらゆるアルゴリズムを用いた関数を利用できる。
【００３６】
送信部１０５は、生成された応答メッセージをクライアントノード２００に送信するものである。
【００３７】
次に、このように構成された本実施の形態にかかるＤＮＳサーバ１００による応答処理について説明する。図３は、本実施の形態における応答処理の全体の流れを示すフローチャートである。
【００３８】
まず、受信部１０１が、クライアントノード２００からＤＮＳの名前解決を要求する問い合わせメッセージを受信する（ステップＳ３０１）。次に、判断部１０３が、問い合わせメッセージに含まれる問い合わせ対象となるドメイン名（以下、問い合わせ名という。）を確認する（ステップＳ３０２）。具体的には、判断部１０３は、問い合わせ名が[rcname]で始まっているか否かにより、当該問い合わせ名がリダイレクト用の問い合わせ名か否かを確認する（ステップＳ３０２）。
【００３９】
次に、判断部１０３が、問い合わせ名がリダイレクト用の問い合わせ名であるか否かを判断する（ステップＳ３０３）。リダイレクト用の問い合わせ名でない場合は（ステップＳ３０３：ＮＯ）、生成部１０２が、問い合わせ名に対応するリソースレコードをＤＮＳデータ記憶部１２２から取得し、取得したリソースレコードを含む応答メッセージを生成する（ステップＳ３０４）。
【００４０】
次に、判断部１０３が、生成された応答メッセージのデータサイズが予め定められた閾値より大きいか否かを判断する（ステップＳ３０５）。閾値より大きくない場合は（ステップＳ３０５：ＮＯ）、送信部１０５は、ステップＳ３０３で生成された応答メッセージをクライアントノード２００に送信する（ステップＳ３０８）。これにより、仮に攻撃ノード４００からの攻撃に対応する応答メッセージであったとしても、増幅サービス攻撃として意味をなさない攻撃の場合はそのままクライアントノード２００に応答メッセージを返し、ＤＮＳサーバ１００上での処理負担を軽減することができる。
【００４１】
閾値より大きい場合は（ステップＳ３０５：ＹＥＳ）、算出部１０４は、リダイレクト用の応答メッセージを生成するときに用いるハッシュ値を算出する。具体的には、算出部１０４は、受信した問い合わせメッセージに含まれる送信元ＩＰアドレスおよび問い合わせ名と、ＤＮＳデータ記憶部１２２に記憶されている鍵情報をそれぞれバイナリ化した数値とみなして連結した値をハッシュキーとして、所定のハッシュ関数を用いてハッシュ値を算出する（ステップＳ３０６）。
【００４２】
次に、生成部１０２は、算出されたハッシュ値を用いて編集した問い合わせ名を含むＣＮＡＭＥレコードを生成し、生成したＣＮＡＭＥレコードを含むリダイレクト用の応答メッセージを生成する（ステップＳ３０７）。
【００４３】
図４は、生成されたリダイレクト用の応答メッセージの一例を示す説明図である。同図に示すように、ＤＮＳで規定された所定のヘッダ（ＵＤＰ（User Datagram Protocol）ヘッダ、ＤＮＳヘッダ）に加えて、応答としてＣＮＡＭＥレコードを含むＤＮＳパケットが、リダイレクト用の応答メッセージとして生成される。
【００４４】
同図は、問い合わせ名が「www.foo.example」である場合に生成されるリダイレクト用の応答メッセージの例を表している。同図に示すように、当該応答メッセージには、「www.foo.example. CNAME rcnamewww.XXXX.foo.example.」がＣＮＡＭＥレコードとして含まれる。なお、「XXXX」は、算出されたハッシュ値をＢＡＳＥ６４などのアルゴリズムでアスキー文字列にエンコードした値である。
【００４５】
図３に戻り、送信部１０５は、ステップＳ３０７で生成されたリダイレクト用の応答メッセージをクライアントノード２００に送信する（ステップＳ３０８）。生成されたリダイレクト用の応答メッセージは、上述のようにＣＮＡＭＥレコードのみを含むため、データサイズは問い合わせメッセージのデータサイズとほぼ同等である。従って、このメッセージによる増幅効果が存在するとしても軽微である。
【００４６】
ステップＳ３０３でリダイレクト用の問い合わせ名であると判断された場合は（ステップＳ３０３：ＹＥＳ）、算出部１０４は、問い合わせメッセージの正当性を検証するためのハッシュ値を算出する。具体的には、算出部１０４は、まず、リダイレクト用の問い合わせ名から元の問い合わせ名を抽出する。例えば、リダイレクト用の問い合わせ名が「rcnamewww.XXXX.foo.example」であった場合、「rcname」と、ハッシュ値をエンコードした部分に対応する「XXXX.」を削除することにより、元の問い合わせ名である「www.foo.example」を抽出する。
【００４７】
次に、算出部１０４は、受信した問い合わせメッセージに含まれる送信元ＩＰアドレスと、抽出した元の問い合わせ名と、ＤＮＳデータ記憶部１２２に記憶されている鍵情報とをそれぞれバイナリ化した数値とみなして連結した値をハッシュキーとして、ステップＳ３０６で用いたものと同じハッシュ関数を用いてハッシュ値を算出する（ステップＳ３０９）。
【００４８】
次に、判断部１０３が、リダイレクト用の問い合わせ名に含まれるハッシュ値と、算出したハッシュ値とが一致するか否かを判断する（ステップＳ３１０）。一致する場合は（ステップＳ３１０：ＹＥＳ）、生成部１０２が、抽出した問い合わせ名に対応するリソースレコードをＤＮＳデータ記憶部１２２から取得し、取得したリソースレコードを名前解決の結果として含む応答メッセージを生成する（ステップＳ３１１）。
【００４９】
次に、送信部１０５が、生成した応答メッセージをクライアントノード２００に送信し（ステップＳ３１２）、応答処理を終了する。
【００５０】
ステップＳ３１０でハッシュ値が一致しないと判断された場合（ステップＳ３１０：ＮＯ）、判断部１０３は、受信した応答メッセージを破棄し（ステップＳ３１３）、応答処理を終了する。
【００５１】
次に、本実施の形態にかかるＤＮＳサーバ１００による攻撃防止処理の具体例について説明する。最初に、正当なクライアントノード２００がＤＮＳサーバ１００に対して「www.foo.example」というドメイン名の名前解決を要求する問い合わせメッセージを送信するときの動作について説明する。
【００５２】
まず、判断部１０３がドメイン名（問い合わせ名）について確認し（ステップＳ３０２）、ゾーン内のラベル（ピリオドで区切られるドメイン名の部分文字列）である「www」はリダイレクト用のラベル名の形式（rcnamewww）ではないと判断する（ステップＳ３０３：ＮＯ）。
【００５３】
次に、判断部１０３により、応答メッセージのサイズが閾値より大きいか否かが判断される（ステップＳ３０５）。上述の仮定（「www.foo.example」に対応する応答メッセージのサイズは十分に大きい）により、応答サイズが閾値を超えていると判断されたとすると（ステップＳ３０５：ＹＥＳ）、リダイレクト用の応答メッセージが生成される（ステップＳ３０７）。
【００５４】
この例では、送信元ＩＰアドレスと問い合わせ名と秘密鍵Ｋとからハッシュ関数を用いてハッシュ値を算出し、算出したハッシュ値をエンコードした「XXXX」を含むＣＮＡＭＥレコード「www.foo.example. CNAME rcnamewww.XXXX.foo.example.」を含む応答メッセージが生成される。
【００５５】
なお、以下では便宜上、送信元ＩＰアドレス（Ｃとする）と、問い合わせ名（www.foo.example.）と、秘密鍵Ｋとからハッシュ関数で求めた「XXXX」を以下の（１）式のように表すこととする。
XXXX = hash-encode（C, www.foo.example, K）・・・（１）
クライアントノード２００は、この応答メッセージを受け取ると、ＣＮＡＭＥレコードで指定された名前、すなわち「rcnamewww.XXXX.foo.example.」に対する問い合わせメッセージを再度送信する。以下、この問い合わせメッセージを受けたＤＮＳサーバ１００の動作を説明する。
【００５６】
まず、判断部１０３が問い合わせ名について確認し（ステップＳ３０２）、ゾーン内のラベルが「rcnamewww」であることから、リダイレクト用の問い合わせ名であると判断する（ステップＳ３０３：ＹＥＳ）。
【００５７】
次に、問い合わせ名の検証処理が行われる。まず、「rcname」に続くラベルの一部「www」を取り出し、さらにハッシュ値のエンコード部分に相当する「XXXX.」を削除した問い合わせ名を用いて、以下の（２）式で表される値を計算する。
hash-encode（C', www.foo.example, K）・・・（２）
ここで、Ｃ'は問い合わせメッセージの送信元ＩＰアドレスである。この例では、クライアントノード２００は正当なクライアントであるため、ＣとＣ'は一致し、算出結果は「XXXX」となる。これが問い合わせ名に含まれるハッシュ値部分と一致することから（ステップＳ３１０：ＹＥＳ）、この問い合わせメッセージは正当であると判断される。そこで、本来問い合わせられた名前である「www.foo.example」に対応するレコードを含む応答を、送信元ＩＰアドレスがＣ’であるクライアントノード２００に送信する（ステップＳ３１２）。
【００５８】
この結果、クライアントノード２００は、本来必要としていた「www.foo.example」に対する応答結果を得ることができる。
【００５９】
次に、正当なクライアントが別なドメイン名「zzz.foo.example」に関する問い合わせメッセージを受信したＤＮＳサーバ１００の動作について説明する。
【００６０】
まず、判断部１０３が問い合わせ名について確認し（ステップＳ３０２）、ゾーン内のラベルである「zzz」はリダイレクト用のラベル名の形式（rcnamezzz）ではないと判断する（ステップＳ３０３：ＮＯ）。
【００６１】
次に、判断部１０３により、応答メッセージのサイズが閾値より大きいか否かが判断される（ステップＳ３０５）。上述の仮定（「zzz.foo.example」に対応する応答メッセージのサイズは十分に小さい）により、応答サイズが閾値を超えていないと判断されたとすると（ステップＳ３０５：ＮＯ）、通常の応答メッセージが送信される（ステップＳ３０８）。
【００６２】
次に、攻撃ノード４００が送信元ＩＰアドレスを偽って、「www.foo.example」の問い合わせをＤＮＳサーバ１００に送信した場合の動作について説明する。この場合、正当なクライアントノード２００からの問い合わせと同様に、応答メッセージサイズが閾値を超えていることから（ステップＳ３０５：ＹＥＳ）、以下のＣＮＡＭＥレコードとして「www.foo.example. CNAME rcnamewww.YYYY.foo.example.」を含むリダイレクト用の応答メッセージを送信する（ステップＳ３０８）。
【００６３】
ここで、「YYYY」は以下の（３）式により算出される。
YYYY = hash-encode（V, www.foo.example, K）  ・・・（３）
ただし、Ｖは被害ノード３００のＩＰアドレスであり、攻撃ノード４００によって詐称され、問い合わせの送信元ＩＰアドレスとして用いられているものとする。
【００６４】
この応答メッセージは被害ノード３００に送信されるが、被害ノード３００はこれに対する問い合わせメッセージを送信していないため、この応答メッセージを無視し、その時点で処理は完了する。この場合、ＣＮＡＭＥレコードのみを含むリダイレクト用の応答メッセージと問い合わせメッセージのデータサイズはほぼ同等であるため、増幅サービス不能攻撃としては有効なものとならない。
【００６５】
一方、攻撃ノード４００は、増幅された応答メッセージが被害ノード３００に返されるようにするためには、（３）式により求めた「YYYY」を含む問い合わせ名「rcnamewww.YYYY.foo.example」をＤＮＳサーバ１００に送信する必要がある。しかし、そのためにはＤＮＳサーバ１００の管理者のみが知る秘密鍵Ｋが必要となる。しかし、通常、攻撃ノード４００が秘密鍵Ｋの値を知る方法が存在しないため、攻撃ノード４００は「YYYY」を算出することができず、増幅サービス不能攻撃を実現することができない。
【００６６】
ここで、従来技術との比較について説明する。図５は、従来のＤＮＳサーバ９００による応答処理の概要を説明する模式図である。また、図６は、本実施の形態のＤＮＳサーバ１００による応答処理の概要を説明する模式図である。
【００６７】
図５で、攻撃ノード４００が送信元ＩＰアドレスを被害ノード３００の送信元ＩＰアドレス（Ｖ）と偽って問い合わせ名「www.foo.example」の問い合わせメッセージを送信すると（１）、ＤＮＳサーバ９００は、問い合わせ名「www.foo.example」に対応するＩＰアドレス（a,a,a,a）を含む応答メッセージを、被害ノード３００に送信する（２）。したがって、従来のＤＮＳサーバ９００では、応答メッセージのサイズが大きい場合に、攻撃ノード４００による増幅サービス不能攻撃が成立することになる。
【００６８】
一方、図６では、攻撃ノード４００が送信元ＩＰアドレスを被害ノード３００の送信元ＩＰアドレス（Ｖ）と偽って問い合わせ名「www.foo.example」の問い合わせメッセージを送信したとしても（１）、ＤＮＳサーバ１００は、直ちに名前解決したアドレスを含む応答メッセージは送信しない。代わりに、ＤＮＳサーバ１００は、ＣＮＡＭＥレコードを含むサイズの小さいリダイレクトメッセージを送信する（２）。このため、攻撃ノード４００は有効な増幅サービス不能攻撃を実行できない。また、上述のように、秘密鍵Ｋを知ることができないため、攻撃ノード４００はリダイレクト用の問い合わせ名を不正に生成することができない。すなわち、攻撃ノード４００は、リダイレクト用の問い合わせ名を用いた増幅サービス不能攻撃を実行することもできない。
【００６９】
このように、本実施の形態によれば、問い合わせに対応する適切なデータを応答するサーバ・クライアント型通信システムで、送信元を偽った問い合わせメッセージに対して大きなサイズの応答メッセージを送信することによる別の通信装置への増幅したサービス不能攻撃が成立することを防止でき、この通信システムにおけるセキュリティを向上させることが可能となる。
【００７０】
また、本実施の形態では、クライアント側は標準的なＤＮＳのＣＮＡＭＥレコードの処理手順にしたがった処理を行うのみである。すなわち、クライアント側で特別に対応することなく増幅効果によるサービス不能攻撃を防止することでき、防止効果を得るための開発および運用コストを下げることが可能となる。
【００７１】
図７は、本実施の形態にかかるＤＮＳサーバのハードウェア構成を示す説明図である。
【００７２】
本実施の形態にかかるＤＮＳサーバは、ＣＰＵ（Central Processing Unit）５１などの制御装置と、ＲＯＭ（Read Only Memory）５２やＲＡＭ５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス６１を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００７３】
本実施の形態にかかるＤＮＳサーバで実行される攻撃防止プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００７４】
また、本実施の形態にかかるＤＮＳサーバで実行される攻撃防止プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施の形態にかかるＤＮＳサーバで実行される攻撃防止プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００７５】
また、本実施の形態の攻撃防止プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００７６】
本実施の形態にかかるＤＮＳサーバで実行される攻撃防止プログラムは、上述した各部（受信部、生成部、判断部、算出部、送信部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１（プロセッサ）が上記記憶媒体から攻撃防止プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【００７７】
以上のように、本発明にかかるサーバ装置、攻撃防止方法および攻撃防止プログラムは、問い合わせに対してサイズの大きい応答を返すＤＮＳサーバに適している。
【図面の簡単な説明】
【００７８】
【図１】ＤＮＳサーバを含むネットワーク構成を示す説明図である。
【図２】ＤＮＳサーバの構成を示すブロック図である。
【図３】応答処理の全体の流れを示すフローチャートである。
【図４】リダイレクト用の応答メッセージの一例を示す説明図である。
【図５】従来のＤＮＳサーバによる応答処理の概要を説明する模式図である。
【図６】本実施の形態のＤＮＳサーバによる応答処理の概要を説明する模式図である。
【図７】本実施の形態にかかるＤＮＳサーバのハードウェア構成を示す説明図である。
【符号の説明】
【００７９】
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５４  通信Ｉ／Ｆ
６１  バス
１００  ＤＮＳサーバ
１０１  受信部
１０２  生成部
１０３  判断部
１０４  算出部
１０５  送信部
１２１  鍵情報記憶部
１２２  ＤＮＳデータ記憶部
２００  クライアントノード
３００  被害ノード
４００  攻撃ノード
５００  インターネット
９００  ＤＮＳサーバ
【図１】
2008109483.tif 000003
【図２】
2008109483.tif 000004
【図３】
2008109483.tif 000005
【図４】
2008109483.tif 000006
【図５】
2008109483.tif 000007
【図６】
2008109483.tif 000008
【図７】
2008109483.tif 000009