(57)【特許請求の範囲】
【請求項１】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
前記アドレスが検索できなかった場合、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部と
を備えることを特徴とする名前解決装置。
【請求項２】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
前記アドレスが検索できなかった場合、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部と、
前記名前解決応答受信部によりトランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成するソケット更新部と
を備えることを特徴とする名前解決装置。
【請求項３】
前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させる名前解決情報データベース更新部
を備えることを特徴とする請求項１または２記載の名前解決装置。
【請求項４】
コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、
名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、
前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、
前記アドレスが検索できなかった場合、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、
当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する名前解決応答受信部と、
前記名前解決応答受信部によりトランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成するソケット更新部と
を備えることを特徴とする名前解決装置。
【請求項５】
名前解決装置が行う名前解決方法であって、
前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースを備え、
前記名前解決方法は、
前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、
前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、
前記名前解決装置の名前解決要求送信部が、当該アドレスが検索できなかった場合において、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、
前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、
前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、
前記名前解決応答受信部が、一致すると判定した場合において、当該名前解決応答内のアドレスを前記名前解決装置の名前解決応答送信部に与えるステップと、
前記名前解決応答送信部が、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を前記コンピュータに送信するステップと
を含むことを特徴とする名前解決方法。
【請求項６】
前記名前解決装置の名前解決情報データベース更新部が、前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させるステップ
を含むことを特徴とする請求項５記載の名前解決方法。
【請求項７】
名前解決装置が行うソケット管理方法であって、
前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースを備え、
前記ソケット管理方法は、
前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、
前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、
前記名前解決装置の名前解決要求送信部が、当該アドレスが検索できなかった場合において、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、
前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、
前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、
前記名前解決装置のソケット更新部が、前記名前解決応答受信部によりトランザクションＩＤ同士が一致しないと判定されたときに存在しているソケットを破棄するステップと、
前記ソケット更新部が、当該ソケットとは異なるソケットを生成するステップと
を含むことを特徴とするソケット管理方法。
【請求項８】
請求項１ないし４のいずれかに記載の名前解決装置をコンピュータにより構成するためのコンピュータプログラム。
【請求項９】
請求項８記載のコンピュータプログラムが格納されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、名前解決装置、名前解決方法およびソケット管理方法に関する。
【背景技術】
【０００２】
ＤＮＳ（Domain Name System）サーバなどと称される名前解決装置は、パーソナルコンピュータなどから送信される名前解決要求内のウェブサーバなどの名前からウェブサーバなどのアドレスを検索し、当該アドレスを含む名前解決応答をパーソナルコンピュータなどに送信することで、パーソナルコンピュータがウェブサーバなどにアクセスできるようにするものである。
【０００３】
図４は、従来の名前解決装置の動作を示すシーケンス図である。
【０００４】
名前解決装置１ａは、ソケットＳＣ１を生成する（ステップＳ１０１）。他のコンピュータ２は、名前解決要求を送信する（ステップＤ１０１）。名前解決装置１ａは、当該名前解決要求内の名前に対応するアドレスを記憶している場合、当該アドレスを含む名前解決応答を生成し、当該名前解決応答をコンピュータ２に送信する。
【０００５】
一方、記憶していない場合、名前解決装置１ａは、ランダムに生成したトランザクションＩＤと当該名前とソケットＳＣ１を示すポート番号とを含む名前解決要求を生成し、名前解決装置３に送信する（ステップＳ１０３）。
【０００６】
名前解決装置１ａは、当該名前解決要求に対して名前解決装置３から当該ポート番号宛に送信された名前解決応答をソケットＳＣ１を使用して受信し（ステップＳ１０５）、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致した場合、当該名前解決応答内のアドレスを含む名前解決応答を生成し、当該名前解決応答をコンピュータ２に送信する（ステップＳ１０７）。これにより、コンピュータ２は、当該アドレスを指定することで、前記名前を有するコンピュータ（サーバなど）にアクセスできるようになる。また、名前解決装置１ａは、次回のために、当該名前とアドレスを対応づけて記憶しておく。
【０００７】
かかる名前解決装置１ａは、悪意のコンピュータ４から攻撃を受けることがある。この攻撃は、コンピュータ２を偽のサーバなどにアクセスさせ、コンピュータ２のユーザが入力したクレジットカード番号などを盗むべくなされる。
【０００８】
コンピュータ２は、例えば、再び名前解決要求を送信し（ステップＤ１０３）、悪意のコンピュータ４が、例えば、偽の名前解決応答を送信してくる（ステップＥ１０１）。    ここで、悪意のコンピュータ４は、無作為に決定したトランザクションＩＤと偽のサーバなどのアドレスとを含む偽の名前解決応答を、無作為に決定したポート番号宛で名前解決装置１ａに対して大量に送信する（ステップＥ１０１）。
【０００９】
悪意のコンピュータ４は、ポート番号を無作為に決定するので、これが正しいポート番号となる可能性は低い。つまり、名前解決装置１ａがソケットＳＣ１を使用して偽の名前解決応答を受信してしまう可能性は低い。しかし、ソケットＳＣ１は生成されたままであり、ポート番号が不変なので、受信されることは皆無ではない（ステップＳ１１５）。しかも、その前に、名前解決装置１ａが、名前解決装置３に名前解決要求を送信しており（ステップＳ１１３）、正規の名前解決応答の送信が、偽の名前解決応答の受信（Ｓ１１５）よりも遅れ（ステップＳ１１７）、当該偽の名前解決応答内のトランザクションＩＤと、当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致してしまった場合、当該名前解決応答内の偽のアドレスを含む名前解決応答が生成され、当該名前解決応答がコンピュータ２に送信されてしまう（ステップＳ１１４）。また、名前解決装置１ａは、当該偽のアドレスを記憶してしまう。
【００１０】
図５は、従来の他の名前解決装置の動作を示すシーケンス図である。
【００１１】
名前解決装置１ｂは、かかる不都合の解決を図ったものであり、コンピュータ２が名前解決要求を送信した場合（ステップＤ２０１）に、ソケットＳＣ１を生成する（ステップＳ２０１）。
【００１２】
名前解決装置１ｂは、当該名前解決要求内の名前に対応するアドレスを記憶していない場合、トランザクションＩＤと名前とソケットＳＣ１のポート番号とを含む名前解決要求を生成し、名前解決装置３に送信する（ステップＳ２０３）。
【００１３】
名前解決装置１ｂは、名前解決応答をソケットＳＣ１を使用して受信し（ステップＳ２０７）、ソケットＳＣ１を破棄し（ステップＳ２０９）、名前解決応答をコンピュータ２に送信する（ステップＳ２１１）。
【００１４】
名前解決装置１ｂは、次の名前解決要求が送信された場合（ステップＤ２１１）、今度は、ソケットＳＣ１とは異なるソケットＳＣ２を生成する（ステップＳ２１１）。
【００１５】
名前解決装置１ｂは、アドレスを記憶していない場合、ソケットＳＣ１のポート番号とは異なるソケットＳＣ２のポート番号を含む名前解決要求を生成し、名前解決装置３に送信する（ステップＳ２１３）。
【００１６】
悪意のコンピュータ４は、例えば、ソケットＳＣ２が存在しているときに偽の名前解決応答を送信してくる（ステップＥ２０１）。この中には、ソケットＳＣ１のポート番号宛の名前解決応答があるかもしれず、仮にソケットＳＣ１が存在しているときに当該名前解決応答が送信されたならば当該名前解決応答は名前解決装置１ｂに受信されてしまうのだが、ソケットＳＣ２はソケットＳＣ１とは異なるので、実際には受信されない。
【００１７】
したがって、名前解決装置１ｂによれば、ソケットＳＣ２のポート番号宛の名前解決応答が送信され、当該名前解決応答を受信してしまう前に、正規の名前解決応答を受信し（ステップＳ２１５）、ソケットＳＣ２を破棄し（ステップＳ２１７）、正規の名前解決応答をコンピュータ２に送信し（ステップＳ２１９）、正規のアドレスを名前解決装置１ｂ自身に記憶する可能性を高めることができる。
【００１８】
なお、下記の非特許文献１には、ソケットを再利用していることの記述（P.5)とランダムにソケットを生成していることの記述(P.7)とがある。
【非特許文献１】Joe Stewart GCIH, "DNS Cache Poisoning - The Next Generation", [online], インターネット<URL:http://www.lurhq.com/dnscache.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかし、名前解決装置１ｂは、ソケットの生成および破棄を名前解決ごとに行うので、ソケットの生成および破棄に多大な処理能力が使用される。
【００２０】
一方、名前解決装置１ａは、ソケットを生成したままとし、当該ソケットを破棄しないので、偽の名前解決応答がコンピュータに送信され、自身も偽のアドレスを記憶してしまう可能性が高い。
【００２１】
本発明は、このような課題に鑑みてなされたものであり、その目的とするところは、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くできる名前解決装置、名前解決方法およびソケット管理方法を提供することにある。
【課題を解決するための手段】
【００２２】
上記課題を解決するために、請求項１の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、前記アドレスが検索できなかった場合、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部とを備えることを特徴とする名前解決装置をもって解決手段とする。
【００２３】
請求項２の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、前記アドレスが検索できなかった場合、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを前記名前解決応答送信部に与える名前解決応答受信部と、前記名前解決応答受信部によりトランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成するソケット更新部とを備えることを特徴とする名前解決装置をもって解決手段とする。
【００２４】
請求項３の本発明は、前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させる名前解決情報データベース更新部を備えることを特徴とする請求項１または２記載の名前解決装置をもって解決手段とする。
請求項４の本発明は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースと、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信する名前解決要求受信部と、前記名前解決要求受信部により受信された名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるアドレス検索部と、前記アドレスが検索できなかった場合、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信する名前解決要求送信部と、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する名前解決応答受信部と、前記名前解決応答受信部によりトランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成するソケット更新部とを備えることを特徴とする名前解決装置をもって解決手段とする。
請求項５の本発明は、名前解決装置が行う名前解決方法であって、前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースを備え、前記名前解決方法は、前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、前記名前解決装置の名前解決要求送信部が、当該アドレスが検索できなかった場合において、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、前記名前解決応答受信部が、一致すると判定した場合において、当該名前解決応答内のアドレスを前記名前解決装置の名前解決応答送信部に与えるステップと、前記名前解決応答送信部が、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を前記コンピュータに送信するステップとを含むことを特徴とする名前解決方法をもって解決手段とする。
請求項６の本発明は、前記名前解決装置の名前解決情報データベース更新部が、前記名前解決要求受信部により受信された名前解決要求内の名前と前記名前解決応答送信部に与えられたアドレスを互いに対応づけて前記名前解決情報データベースに記憶させるステップを含むことを特徴とする請求項５記載の名前解決方法をもって解決手段とする。
請求項７の本発明は、名前解決装置が行うソケット管理方法であって、前記名前解決装置は、コンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベースを備え、前記ソケット管理方法は、前記名前解決装置の名前解決要求受信部が、名前を含む名前解決要求を送信したコンピュータから当該名前解決要求を受信するステップと、前記名前解決装置のアドレス検索部が、当該名前解決要求内の名前に対応づけられたアドレスを前記名前解決情報データベースから検索することを試みるステップと、前記名前解決装置の名前解決要求送信部が、当該アドレスが検索できなかった場合において、他の名前解決装置から送信される名前解決応答の受信に使用するために生成されるソケットであって当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とランダムに生成したトランザクションＩＤと前記名前とを含む名前解決要求を生成し、当該名前解決要求を前記他の名前解決装置に送信するステップと、前記名前解決装置の名前解決応答受信部が、当該名前解決要求に対して前記他の名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信するステップと、前記名前解決応答受信部が、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定するステップと、前記名前解決装置のソケット更新部が、前記名前解決応答受信部によりトランザクションＩＤ同士が一致しないと判定されたときに存在しているソケットを破棄するステップと、前記ソケット更新部が、当該ソケットとは異なるソケットを生成するステップとを含むことを特徴とするソケット管理方法をもって解決手段とする。
【００２５】
請求項８の本発明は、請求項１ないし４のいずれかに記載の名前解決装置をコンピュータにより構成するためのコンピュータプログラムをもって解決手段とする。
【００２７】
請求項９の本発明は、請求項８記載のコンピュータプログラムが格納されたコンピュータ読み取り可能な記録媒体をもって解決手段とする。
【発明の効果】
【００２８】
本発明によれば、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くすることができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態に係る名前解決装置、名前解決方法およびソケット管理方法を図面を参照して説明する。
【００３０】
図１は、本実施の形態に係る名前解決装置の構成を示すブロック図である。
【００３１】
名前解決装置１は、ウェブサーバなどの他のコンピュータの名前と当該コンピュータのアドレスが互いに対応づけられて記憶される名前解決情報データベース１１と、名前を含む名前解決要求を送信したパーソナルコンピュータなどのコンピュータから当該名前解決要求を受信する名前解決要求受信部１２と、当該名前を有するコンピュータのアドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータに送信する名前解決応答送信部１３と、名前解決要求受信部１２により受信された名前解決要求内の名前に対応づけられたアドレスを名前解決情報データベース１１から検索することを試み、当該アドレスが検索できた場合、当該アドレスを名前解決応答送信部１３に与えるアドレス検索部１４と、図示しない名前解決装置から送信される名前解決応答の受信に使用されるソケットを最初に生成するソケット生成部１５と、ランダムに生成したトランザクションＩＤとアドレスが検索できなかったときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該アドレスが検索できなかったときに存在しているソケットを示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を図示しない名前解決装置に送信する名前解決要求送信部１６と、当該名前解決要求に対して図示しない名前解決装置から当該ポート番号宛に送信された名前解決応答を当該ソケットを使用して受信し、当該名前解決応答内のトランザクションＩＤと当該名前解決要求内のトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定し、一致すると判定した場合、当該名前解決応答内のアドレスを名前解決応答送信部１３に与える名前解決応答受信部１７と、名前解決応答受信部１７により名前解決応答送信部１３にアドレスが与えられたときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該アドレスを互いに対応づけて名前解決情報データベース１１に記憶させる名前解決情報データベース更新部１８と、名前解決応答受信部１７によりトランザクションＩＤ同士が一致しないと判定された場合、当該一致しないと判定されたときに存在しているソケットを破棄し、当該ソケットとは異なるソケットを生成するソケット更新部１９と、トランザクションＩＤが記憶されるトランザクションＩＤ記憶部１１０とを備える。
【００３２】
（本実施の形態に係る名前解決装置１の動作）
図２は、名前解決装置１の動作を示すフローチャートである。図３は、名前解決装置１の動作を示すシーケンス図である。
【００３３】
まず、名前解決装置１のソケット生成部１５は、ソケットＳＣ１を生成する（ステップＳ１）。
【００３４】
次に、名前解決要求受信部１２が、他のコンピュータ２から送信される名前解決要求を待機する。名前解決要求が送信され（ステップＤ１）、名前解決要求受信部１２が名前解決要求を受信した（ステップＳ５：ＹＥＳ）なら、アドレス検索部１４は、名前解決要求内の名前に対応づけられたアドレスを名前解決情報データベース１１から検索することを試みる（ステップＳ７）。アドレス検索部１４は、当該アドレスが検索できた場合（ステップＳ９：ＹＥＳ）、当該アドレスを名前解決応答送信部１３に与え、名前解決応答送信部１３は、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を当該名前解決要求を送信したコンピュータ２に送信し（ステップＳ１１）、制御はステップＳ５に戻る。
【００３５】
アドレスが検索できなかった場合、名前解決要求送信部１６が、トランザクションＩＤをランダムに生成し、当該トランザクションＩＤをトランザクションＩＤ記憶部１１０に記憶させ、当該トランザクションＩＤとアドレスが検索できなかったときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該アドレスが検索できなかったときに存在している（ここではソケットＳＣ１）を示すポート番号とを含む名前解決要求を生成し、当該名前解決要求を他の名前解決装置３に送信する（ステップＳ２１）。
【００３６】
トランザクションＩＤは、例えば、１６ビットの情報であり、１６ビットで表現できる約６５０００の値の中の１つがランダムに生成される。
【００３７】
名前解決装置３は、例えば、ＤＮＳ権威サーバなどと称されるものである。名前解決装置３は、名前解決装置１などから送信される名前解決要求内の名前から当該名前を有するコンピュータのアドレスを検索し、当該アドレスを含む名前解決応答を名前解決装置１などに送信するものである。
【００３８】
次に、名前解決応答受信部１７が、当該名前解決要求に対して名前解決装置３から当該ポート番号宛に送信された名前解決応答をソケットＳＣ１を使用して受信する（ステップＳ２３）。
【００３９】
次に、名前解決応答受信部１７は、トランザクションＩＤ記憶部１１０からトランザクションＩＤすなわち名前解決装置３に送信された名前解決要求内のトランザクションＩＤと同じものを読み出し、当該名前解決応答内のトランザクションＩＤとトランザクションＩＤ記憶部１１０から読み出したトランザクションＩＤとからなるトランザクションＩＤ同士が一致するか否かを判定する（ステップＳ２５）。一致すると判定した場合（ステップＳ２５：ＹＥＳ）、名前解決応答受信部１７は、当該名前解決応答内のアドレスを名前解決応答送信部１３に与え、名前解決応答送信部１３は、当該アドレスを含む名前解決応答を生成し、当該名前解決応答を当該アドレスが与えられたときに先だって名前解決要求受信部１２により受信された名前解決要求を送信したコンピュータ２に送信する（ステップＳ２７）。
【００４０】
次に、名前解決応答受信部１７は、当該名前解決応答内のアドレスを名前解決情報データベース更新部１８に与え、名前解決情報データベース更新部１８は、当該アドレスが与えられたときに先だって名前解決要求受信部１２により受信された名前解決要求内の名前と当該アドレスを互いに対応づけて名前解決情報データベース１１に記憶させ（ステップＳ２９）、制御はステップＳ５に戻る。
【００４１】
トランザクションＩＤ同士が一致しないと判定された場合（ステップＳ２５：ＮＯ）、ソケット更新部１９が、一致しないと判定されたときに存在しているソケットを破棄し（ステップＳ３１）、当該ソケットとは異なるソケットを生成し（ステップＳ１）、制御はステップＳ５に移る。
【００４２】
上記の動作は、コンピュータ２以外のコンピュータから名前解決要求が送信された場合においても同様になされる。また、上記の動作は、名前解決要求が送信されるタイミングによらず、同様になされる。
【００４３】
例えば、コンピュータ２から名前解決要求が送信され（ステップＤ３）、悪意のコンピュータ４が、偽の名前解決応答を送信してくる（ステップＥ５１）。この中に、ソケットＳＣ１のポート番号宛の名前解決応答があった場合、当該名前解決応答は名前解決装置１に受信される（ステップＥ５１１）。
【００４４】
しかし、トランザクションＩＤ同士が一致することは稀であり、多くの場合、一致しないと判定され、そのときに存在しているソケットが破棄される（ステップＳ３１）、新たなソケットＳＣ２が生成される（ステップＳ１）。
【００４５】
コンピュータ２は、例えば、ソケットＳＣ２が存在しているときに名前解決要求を送信し（ステップＤ５）、悪意のコンピュータ４が、例えば、ソケットＳＣ２が存在しているときに偽の名前解決応答を送信してくる（ステップＥ５３）。この中には、ソケットＳＣ１のポート番号宛の名前解決応答があるかもしれず、仮にソケットＳＣ１が存在しているときに当該名前解決応答が送信されたならば当該名前解決応答は名前解決装置１に受信されてしまうのだが、ソケットＳＣ２はソケットＳＣ１とは異なるので、実際には受信されない。  
したがって、悪意のコンピュータ４からソケットＳＣ２のポート番号宛の名前解決応答が送信され、当該名前解決応答を受信してしまう前に、正規の名前解決応答を受信でき（ステップＳ２３）、正規の名前解決応答をコンピュータ２に送信でき（ステップＳ２７）、正規のアドレスを名前解決装置１に記憶できる可能性を高めることができる。
【００４６】
つまり、名前解決装置１は、ソケットの生成および破棄を、トランザクションＩＤ同士が一致しないと判定された場合に行うので、悪意のコンピュータ４が偽の名前解決応答を送信し始めた後においては、トランザクションＩＤ同士が一致しない場合が通常より多くなるので、単位時間あたりのソケットの生成および破棄の回数が多くなり、偽の名前解決応答は受信されにくくなる。よって、悪意のコンピュータ４が偽の名前解決応答を送信し始めた後においては、偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くできる。
【００４７】
一方、悪意のコンピュータ４が偽の名前解決応答を送信し始める前においてはソケットは生成されたままなので、ソケットの生成および破棄を名前解決ごとに行う場合に比べ、ソケットの生成および破棄に使用される処理能力を低減することができる。
【００４８】
すなわち、名前解決装置１によれば、ソケットの生成および破棄に使用される処理能力を低減でき且つ偽の名前解決応答を送信するとともに偽のアドレスを記憶してしまう可能性を低くすることができる
なお、本実施の形態に係る名前解決装置をコンピュータに構成するためのコンピュータプログラム、または、当該名前解決装置が行った上記の名前解決方法またはソケット管理方法を当該名前解決装置に実行させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に格納し、陳列などして流通させたり、当該コンピュータプログラムをインターネットなどの通信網を介して伝送させてもよい。
【図面の簡単な説明】
【００４９】
【図１】本実施の形態に係る名前解決装置の構成を示すブロック図である。
【図２】名前解決装置１の動作を示すフローチャートである。
【図３】名前解決装置１の動作を示すシーケンス図である。
【図４】従来の名前解決装置の動作を示すシーケンス図である。
【図５】従来の他の名前解決装置の動作を示すシーケンス図である。
【符号の説明】
【００５０】
１、３…名前解決装置
２…コンピュータ
４…悪意のコンピュータ
１１…名前解決情報データベース
１２…名前解決要求受信部
１３…名前解決応答送信部
１４…アドレス検索部
１５…ソケット生成部
１６…名前解決要求送信部
１７…名前解決応答受信部
１８…名前解決情報データベース更新部
１９…ソケット更新部
１１０…トランザクションＩＤ記憶部
【図１】
0004568752.tif 000002
【図２】
0004568752.tif 000003
【図３】
0004568752.tif 000004
【図４】
0004568752.tif 000005
【図５】
0004568752.tif 000006