(57)【特許請求の範囲】
【請求項１】
所定のアプリケーションが搭載されたクライアント装置と、該所定のアプリケーションと第１の通信ポートを介して通信するサーバ装置とを有する情報処理システムであって、
前記クライアント装置は、
第１の時刻情報に基づき、１以上の第２の通信ポートと、前記第１の通信ポートを開放するための前記第２の通信ポートを指定した開放要求を送信する順番とを含む第１の開放パターンを決定する第１の決定手段と、
前記第１の決定手段により決定された第１の開放パターンに基づき、前記サーバ装置に対して、前記第２の通信ポートを指定した前記開放要求を前記順番に従って送信する送信手段と、
を有し、
前記サーバ装置は、
第２の時刻情報に基づき、前記サーバ装置の前記第１の通信ポートを開放するための１以上の第３の通信ポートと、該第３の通信ポートを指定した開放要求を受信する順番とを含む第２の開放パターンを決定する第２の決定手段と、
前記クライアント装置から受信した前記開放要求と、前記第２の開放パターンとに基づき、前記第１の通信ポートを開放するか否かを判定する判定手段と、
前記判定手段により前記第１の通信ポートを開放すると判定された場合、該第１の通信ポートを開放する開放手段と、
を有し、
前記第１の決定手段は、
前記第１の時刻情報に基づき所定のマッピングテーブルから算出された番号を、前記１以上の第２の通信ポートとした前記第１の開放パターンを決定し、
前記第２の決定手段は、
前記第２の時刻情報に基づき所定のマッピングテーブルから算出された番号を、前記１以上の第３の通信ポートとした前記第２の開放パターンを決定する、情報処理システム。
【請求項２】
前記判定手段は、
受信した開放要求に指定された前記第２の通信ポート及び該開放要求を受信した順番と、前記第２の開放パターンに含まれる前記第３の通信ポート及び該第３の通信ポートを指定した開放要求を受信する順番とがそれぞれ一致する場合、前記第１の通信ポートを開放すると判定する、請求項１記載の情報処理システム。
【請求項３】
前記第１の決定手段は、
前記第１の時刻情報に基づき１以上の第１の疑似乱数を生成し、該生成された１以上の第１の疑似乱数を前記１以上の第２の通信ポートとした前記第１の開放パターンを決定し、
前記第２の決定手段は、
前記第２の時刻情報に基づき１以上の第２の疑似乱数を生成し、該生成された１以上の第２の疑似乱数を前記１以上の第３の通信ポートとした前記第２の開放パターンを決定する、請求項１又は２記載の情報処理システム。
【請求項４】
前記第１の決定手段は、
さらに、予め設定された所定の文字列情報に基づき前記第１の開放パターンを決定し、
前記第２の決定手段は、
さらに、前記所定の文字列情報に基づき前記第２の開放パターンを決定する、請求項１ないし３のいずれか１項に記載の情報処理システム。
【請求項５】
前記サーバ装置は、
前記第２の決定手段により決定された開放パターンを削除する削除手段を有し、
前記第２の決定手段は、
前記削除手段により前記第２の開放パターンが削除されると、第３の時刻情報に基づき、前記サーバ装置の前記第１の通信ポートを開放するための１以上の第４の通信ポートと、該第４の通信ポートを指定した開放要求を受信する順番とを含む第３の開放パターンを決定する、請求項１ないし４のいずれか１項に記載の情報処理システム。
【請求項６】
前記削除手段は、所定の時間経過毎に、前記第２の決定手段により決定された開放パターンを削除する、請求項５記載の情報処理システム。
【請求項７】
前記第２の決定手段は、
第２の時刻情報に基づき、前記サーバ装置の前記第１の通信ポートを開放するための１以上の第３の通信ポートと、該第３の通信ポートを指定した開放要求を受信する順番とを含む第２の開放パターンを、複数決定し、
前記判定手段は、
前記クライアント装置から受信した前記開放要求と、複数の前記第２の開放パターンとに基づき、前記第１の通信ポートを開放するか否かを判定する、請求項１ないし６のいずれか１項に記載の情報処理システム。
【請求項８】
前記クライアント装置又は／及び前記サーバ装置は、組み込みシステムである、請求項１ないし７のいずれか１項に記載の情報処理システム。
【請求項９】
当該情報処理装置と異なる他の情報処理装置に搭載された所定のアプリケーションと第１の通信ポートを介して通信する情報処理装置であって、
時刻情報に基づき、前記第１の通信ポートを開放するための開放パターンを決定する決定手段と、
前記他の情報処理装置から受信した前記第１の通信ポートを開放するための１以上の開放要求を受信する受信手段と、
前記１以上の開放要求を受信した順番及び該１以上の開放要求にそれぞれ指定された第２の通信ポートと、前記開放パターンとに基づき、前記第１の通信ポートを開放するか否かを判定する判定手段と、
前記判定手段により前記第１の通信ポートを開放すると判定された場合、該第１の通信ポートを開放する開放手段と、
を有し、
前記開放パターンには、１以上の第３の通信ポートと、該第３の通信ポートを指定した開放要求を受信する順番とが含まれ、
前記決定手段は、
前記時刻情報に基づき所定のマッピングテーブルから算出された番号を、前記１以上の第３の通信ポートとした前記開放パターンを決定する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及び情報処理装置に関する。
【背景技術】
【０００２】
従来より、インターネット等のネットワークに接続されている機器について、開放されている通信ポート番号の情報を検索することができる技術が知られている。また、ネットワークに接続されている機器について、開放されている通信ポート番号の情報を取得するためのポートスキャンと呼ばれる技術も従来より知られている。このような技術を用いることにより、ネットワークに接続されている機器の開放されている通信ポートに対して第三者から不正にアクセスされる可能性がある。
【０００３】
一方、機器に搭載されているアプリケーションが使用する通信ポート番号を隠ぺいすることができる技術が知られている（例えば特許文献１及び２参照）。
【０００４】
また、予め設定された所定の通信ポートに対して所定の順序でアクセスを試行することにより、所定のアプリケーションが使用する通信ポートを開放するポートノッキングと呼ばれる技術が知られている。
【０００５】
ここで、一般に、組み込みシステムや制御機器等は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）、ＲＯＭ（Read Only Memory）等のハードウェア資源が限られている場合が多い。したがって、このような組み込みシステムや制御機器等においては、ハードウェア資源の不要な消費を防止する観点から、開放されている通信ポート番号のみならず、組み込みシステムや制御機器等の存在自体を第三者から隠ぺいすることが好ましい。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−３５２４７６号公報
【特許文献２】特開２００７−６１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の従来技術においては、機器の存在を第三者から適切に隠ぺいすることができない場合があり、第三者により不正アクセスがなされる可能性があった。例えば、ポートスキャンが行われた場合、アプリケーションが使用する通信ポート番号は隠ぺいされるものの、ポートスキャンに対しては応答してしまうため、機器の存在は隠ぺいすることができない場合がある。また、例えば、ネットワーク上のパケットが盗聴された場合、いわゆるリプレイ攻撃の手法により機器が不正にアクセスされる可能性がある。
【０００８】
本発明の実施の形態は、上記の点に鑑みてなされたもので、不正アクセスの防止を支援することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の実施の形態は、所定のアプリケーションが搭載されたクライアント装置と、該所定のアプリケーションと第１の通信ポートを介して通信するサーバ装置とを有する情報処理システムであって、前記クライアント装置は、第１の時刻情報に基づき、１以上の第２の通信ポートと、前記第１の通信ポートを開放するための前記第２の通信ポートを指定した開放要求を送信する順番とを含む第１の開放パターンを決定する第１の決定手段と、前記第１の決定手段により決定された第１の開放パターンに基づき、前記サーバ装置に対して、前記第２の通信ポートを指定した前記開放要求を前記順番に従って送信する送信手段と、を有し、前記サーバ装置は、第２の時刻情報に基づき、前記サーバ装置の前記第１の通信ポートを開放するための１以上の第３の通信ポートと、該第３の通信ポートを指定した開放要求を受信する順番とを含む第２の開放パターンを決定する第２の決定手段と、前記クライアント装置から受信した前記開放要求と、前記第２の開放パターンとに基づき、前記第１の通信ポートを開放するか否かを判定する判定手段と、前記判定手段により前記第１の通信ポートを開放すると判定された場合、該第１の通信ポートを開放する開放手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明の実施の形態によれば、不正アクセスの防止を支援することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る情報処理システムの一例のシステム構成図である。
【図２】本実施形態に係るコンピュータの一例のハードウェア構成図である。
【図３】本実施形態に係る情報処理システムの一例の機能構成図である。
【図４】開放パターン設定情報の一例のデータ構成図である。
【図５】要求パターン設定情報の一例のデータ構成図である。
【図６】本実施形態に係る情報処理システムの処理の流れの一例のシーケンス図である。
【図７】要求パターンの一例を説明するための図である。
【図８】本実施形態に係るポート開放判定処理の一例のフローチャートである。
【図９】開放パターンの一例を説明するための図である。
【図１０】開放パターンの他の例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１３】
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について説明する。図１は、本実施形態に係る情報処理システムの一例のシステム構成図である。図１に示す情報処理システム１は、サーバ装置１０と、１台以上のクライアント装置２０とが例えばインターネット等のネットワークＮを介して互いに接続されている。ネットワークＮの全部又は一部は、例えばＬＡＮ（Local Area Network）や電話回線網等であってもよい。
【００１４】
サーバ装置１０は、例えば、組み込みシステムやＰＬＣ（Programmable Logic Controller）、ＰＣ（パーソナルコンピュータ）等であり、クライアント装置２０からの要求に応じて所定の処理を行う。ここで、所定の処理とは、例えば、サーバ装置１０がＷｅｂサーバである場合は、クライアント装置２０からの要求に応じて、ＨＴＴＰ（Hypertext Transfer Protocol）情報等を提供する処理である。これ以外にも、例えば、サーバ装置１０がＴｅｌｎｅｔ（Teletype network）やＳＳＨ（Secure Shell）等を用いた仮想端末をクライアント装置２０に提供する処理等であってもよい。
【００１５】
クライアント装置２０は、例えば、ＰＣ（パーソナルコンピュータ）、スマートフォン、タブレット端末等であり、サーバ装置１０に対して所定の処理を要求する。クライアント装置２０は、組み込みシステムやＰＬＣ等であってもよい。なお、以降では、クライアント装置２０のそれぞれを区別する場合は、「クライアント装置２０１」、「クライアント装置２０２」、・・・と表す。
【００１６】
なお、図１に示す情報処理システム１は、一例であり、サーバ装置１０が２台以上含まれていてもよい。また、サーバ装置１０及びクライアント装置２０との名称は、便宜上であり、サーバ装置１０がクライアントとして機能してもよいし、クライアント装置２０がサーバとして機能してもよい。
【００１７】
＜ハードウェア構成＞
次に、本実施形態に係るサーバ装置１０及びクライアント装置２０のハードウェア構成について説明する。本実施形態に係るサーバ装置１０及びクライアント装置２０は、例えば図２に示すようなコンピュータ１００により実現することができる。図２は、本実施形態に係るコンピュータの一例のハードウェア構成図である。
【００１８】
図２に示すコンピュータ１００は、入力装置１０１と、表示装置１０２と、外部Ｉ／Ｆ１０３と、ＲＡＭ（Random Access Memory）１０４と、ＲＯＭ１０５と、ＣＰＵ１０６と、通信Ｉ／Ｆ１０７と、ＨＤＤ（Hard Disk Drive）１０８とを備え、それぞれがバスＢで接続されている。
【００１９】
入力装置１０１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１０２は、ディスプレイ等を含み、コンピュータ１００による処理結果を表示する。なお、入力装置１０１及び表示装置１０２は必要なときに接続して利用する形態であってもよい。
【００２０】
通信Ｉ／Ｆ１０７はコンピュータ１００をネットワークＮに接続するインタフェースである。これにより、コンピュータ１００は通信Ｉ／Ｆ１０７を介して他の装置とデータ通信を行うことができる。
【００２１】
また、ＨＤＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータには、コンピュータ１００全体を制御する基本ソフトウェアであるＯＳ（Operating System）、及びＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。なお、コンピュータ１００はＨＤＤ１０８に代わりに又はＨＤＤ１０８と併せて、フラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであってもよい。
【００２２】
ＨＤＤ１０８は格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。外部Ｉ／Ｆ１０３は、外部装置とのインタフェースである。外部装置には、記録媒体１０３ａ等がある。これにより、コンピュータ１００は外部Ｉ／Ｆ１０３を介して記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１０３ａにはフレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２３】
ＲＯＭ１０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１０５にはコンピュータ１００の起動時に実行されるＢＩＯＳ、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１０４はプログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。
【００２４】
ＣＰＵ１０６は、ＲＯＭ１０５やＨＤＤ１０８等の記憶装置からプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、コンピュータ１００全体の制御や機能を実現する演算装置である。
【００２５】
本実施形態に係るサーバ装置１０及びクライアント装置２０は、上記ハードウェア構成により後述する処理を実現することができる。なお、上記ハードウェア構成は一例であり、サーバ装置１０及びクライアント装置２０のハードウェア構成は、これに限られない。サーバ装置１０又は／及びクライアント装置２０が、例えば、組み込みシステムである場合、ＨＤＤ１０８を有していない場合が多く、また、ＣＰＵの代わりにＭＰＵを有している場合が多い。
【００２６】
＜機能構成＞
次に、本実施形態に係る情報処理システム１の機能構成について説明する。図３は、本実施形態に係る情報処理システムの一例の機能構成図である。
【００２７】
≪サーバ装置≫
本実施形態に係るサーバ装置１０は、通信部１１と、パケット処理部１２と、サーバアプリケーション１３と、ポート制御部１４と、時刻取得部１５とを有する。また、サーバ装置１０は、パケット記憶部１６と、開放パターン設定記憶部１７とを利用する。
【００２８】
通信部１１は、例えば、ＣＰＵ１０６、通信Ｉ／Ｆ１０７等により実現され、クライアント装置２０との通信を行う。すなわち、サーバ装置１０は、通信部１１を介して、クライアント装置２０とパケットの送受信を行う。
【００２９】
パケット処理部１２は、例えば、ＣＰＵ１０６等により実現され、通信部１１を介してクライアント装置２０から受信したパケットの保存及び解析を行う。すなわち、パケット処理部１２は、受信したパケットをパケット記憶部１６に保存する。また、パケット処理部１２は、保存したパケットのヘッダから宛先ポート番号を取得する。そして、パケット処理部１２は、取得した宛先ポート番号が閉鎖されている場合、保存したパケットを破棄する一方、取得した宛先ポート番号が開放されている場合、保存したパケットを当該宛先ポート番号に対応するサーバアプリケーション１３に送信する。
【００３０】
サーバアプリケーション１３は、サーバ装置１０に搭載（インストール）され、後述するクライアントアプリケーション２２に対してサーバとして機能するプログラムである。サーバアプリケーション１３は、例えば、クライアント装置２０に対してＷｅｂサーバとして機能するためのプログラム、ＦＴＰサーバとして機能するためのプログラム、ＳＳＨサーバ等の仮想端末を提供するためのプログラム等である。なお、サーバアプリケーション１３は、サーバアプリケーション１３毎に予め決められた番号の通信ポートを用いてクライアント装置２０と通信を行う。
【００３１】
ポート制御部１４は、例えば、ＣＰＵ１０６等により実現され、開放パターン設定記憶部１７に記憶されている開放パターン設定情報１７Ｄと、時刻取得部１５により取得された時刻情報とに基づき、開放パターンを生成する。ここで、開放パターンとは、詳細は後述するが、所定のポート番号の通信ポート（以降、単に「ポート」表す）を開放させるためにクライアント装置２０が行うポートノッキングに対する正解パターンである。すなわち、クライアント装置２０から開放パターンに指定されたポート番号及び順序でポートノッキングが行われた場合、ポート制御部１４は、所定のポート番号のポートを開放する。
【００３２】
ここで、ポートノッキングとは、指定された１以上のポート番号に対して、指定された順序でパケットを送信することで、所定のポートを開放させる手法である。
【００３３】
時刻取得部１５は、例えば、ＣＰＵ１０６等により実現され、現在時刻を示す時刻情報を取得する。
【００３４】
パケット記憶部１６は、例えば、ＨＤＤ１０８又はサーバ装置１０とネットワークＮを介して接続された記憶装置等により実現され、通信部１１を介してクライアント装置２０から受信したパケットを保存する。なお、後述するように、パケット記憶部１６は、受信したパケットを一時的に保存するための記憶部であるため、例えばＲＡＭ１０４等により実現されてもよい。
【００３５】
開放パターン設定記憶部１７は、例えば、ＨＤＤ１０８又はサーバ装置１０とネットワークＮを介して接続された記憶装置等により実現され、ポート制御部１４が開放パターンを生成するための開放パターン設定情報１７Ｄを記憶する。開放パターン設定情報１７Ｄの詳細については後述する。
【００３６】
≪クライアント装置≫
本実施形態に係るクライアント装置２０は、通信部２１と、クライアントアプリケーション２２と、ポート開放要求部２３と、時刻取得部２４とを有する。また、クライアント装置２０は、要求パターン設定記憶部２５を利用する。
【００３７】
通信部２１は、例えば、ＣＰＵ１０６、通信Ｉ／Ｆ１０７等により実現され、サーバ装置１０との通信を行う。すなわち、クライアント装置２０は、通信部２１を介して、サーバ装置１０とパケットの送受信を行う。
【００３８】
クライアントアプリケーション２２は、クライアント装置２０に搭載（インストール）され、上述したサーバアプリケーション１３に対してクライアントとして機能するプログラムである。クライアントアプリケーション２２は、例えば、Ｗｅｂブラウザ、ＦＴＰクライアント、ＳＳＨクライアント等のプログラムである。なお、クライアントアプリケーション２２は、サーバアプリケーション１３毎に予め決められたポート番号を用いてクライアント装置２０と通信を行う。
【００３９】
ポート開放要求部２３は、例えば、ＣＰＵ１０６等により実現され、要求パターン設定記憶部２５に記憶されている要求パターン設定情報２５Ｄと、時刻取得部２４により取得された時刻情報とに基づき、要求パターンを生成する。また、ポート開放要求部２３は、生成された要求パターンに基づき、通信部２１を介して、サーバ装置１０に対してポートノッキングを行う。ここで、要求パターンとは、詳細は後述するが、サーバ装置１０の所定のポート番号のポートを開放させるためのポートノッキングのノッキングパターンである。すなわち、クライアント装置２０は、要求パターンに指定されたポート番号及び順序で、サーバ装置１０に対して、ポートノッキングを行う。
【００４０】
時刻取得部２４は、例えば、ＣＰＵ１０６等により実現され、現在時刻を示す時刻情報を取得する。ここで、クライアント装置２０の時刻取得部２４及びサーバ装置１０の時刻取得部１５がそれぞれ取得する時刻情報は、互いに同期されている必要がある。時刻取得部１５及び時刻取得部２４によりそれぞれ取得される時刻情報を互いに同期させるためには、例えば、ＧＰＳ（Global Positioning System）時刻やＮＴＰ（Network Time Protocol）等を用いることにより行うことができる。
【００４１】
要求パターン設定記憶部２５は、例えば、ＨＤＤ１０８又はクライアント装置２０とネットワークＮを介して接続された記憶装置等により実現され、ポート開放要求部２３が要求パターンを生成するための要求パターン設定情報２５Ｄを記憶する。要求パターン設定情報２５Ｄの詳細については後述する。
【００４２】
≪開放パターン設定情報≫
次に、開放パターン設定記憶部１７に記憶されている開放パターン設定情報１７Ｄについて説明する。図４は、開放パターン設定情報の一例のデータ構成図である。
【００４３】
開放パターン設定情報１７Ｄは、アドレス情報、開放対象ポート番号、開放パターン生成方式、キー情報、ポート数等のデータ項目を有する。
【００４４】
アドレス情報は、クライアント装置２０を識別するためのＩＰアドレス等のアドレス情報である。アドレス情報には、ＭＡＣ（Media Access Control）アドレスや製造固有番号（シリアルナンバー）等を用いてもよい。開放対象ポート番号は、クライアント装置２０から受信したノッキングパターンが開放パターンと一致した場合に、ポート制御部１４により開放されるポートの番号である。
【００４５】
開放パターン生成方式は、例えば、乱数生成方式やマッピングテーブル方式等がある。例えば、乱数生成方式では、時刻取得部１５により取得された時刻情報と、キー情報に指定された文字列とに基づき、ポート数に指定された個数の乱数列を生成し、この乱数列を開放パターンとする方式である。なお、生成される乱数列の各乱数の値は、０以上６５５３５以下の数値（すなわち、いずれかのポート番号を示す数値）である。一方、マッピングテーブル方式では、時刻取得部１５により取得された時刻情報と、キー情報に指定された文字列と、予め設定された所定のマッピングテーブルとに基づき、時刻情報及び文字列の例えばハッシュ値を用いてマッピングテーブルからポート数に指定された個数のポート番号を取得し、この取得したポート番号を開放パターンとする方式である。
【００４６】
ここで、キー情報に指定される文字列は、クライアント装置２０毎に任意の文字列を指定すればよい。このようなキー情報を用いることにより、異なるクライアント装置２０間で異なる開放パターンを生成することができる。例えば、クライアント装置２０１（キー情報「ＩＤ００１」）と、クライアント装置２０２（キー情報「ＩＤ００２」）とに対して、同時刻（同じ時刻情報）に開放パターンを生成した場合においても、異なる開放パターンを生成することができる。このことは後述する要求パターンの生成においても同様である。
【００４７】
≪要求パターン設定情報≫
次に、要求パターン設定記憶部２５に記憶されている要求パターン設定情報２５Ｄについて説明する。図５は、要求パターン設定情報の一例のデータ構成図である。
【００４８】
要求パターン設定情報２５Ｄは、開放要求ポート番号、要求パターン生成方式、キー情報、ポート数等のデータ項目を有する。これらのデータ項目の設定値は、サーバ装置１０の開放パターン設定情報１７Ｄの対応するレコードの開放対象ポート番号、開放パターン生成方式、キー情報、ポート数とそれぞれ同じ値である。
【００４９】
すなわち、例えばクライアント装置２０１（アドレス情報「１９２．１６８．０．１」）の要求パターン設定記憶部２５に記憶されている要求パターン設定情報２５Ｄは、サーバ装置１０の開放パターン設定情報１７Ｄの１行目〜３行目のレコードのそれぞれの各設定値を有する情報である。同様に、例えばクライアント装置２０２（アドレス情報「１９２．１６８．０．２」）の要求パターン設定記憶部２５に記憶されている要求パターン設定情報２５Ｄは、サーバ装置１０の開放パターン設定情報１７Ｄの４レコード目の各設定値を有する情報である。このように、各クライアント装置２０が有する要求パターン設定情報２５Ｄは、サーバ装置１０が有する開放パターン設定情報１７Ｄの「一部」である。これにより、クライアント装置２０が生成する要求パターンと、サーバ装置１０が生成する開放パターンは、（後述するように、所定の範囲内の時刻情報であれば）同じパターンとなり、クライアント装置２０は、ポートノッキングによりサーバ装置１０の対象のポート番号を開放させることができる。
【００５０】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【００５１】
≪処理の流れ≫
まず、本実施形態に係る情報処理システム１の処理の流れを図６を用いて説明する。本実施形態に係るクライアント装置２０は、クライアントアプリケーション２２による通信に先立って、サーバ装置１０に対して、ポートノッキングによりクライアントアプリケーション２２がサーバアプリケーション１３と通信を行うためのポートの開放要求を行う。このとき、本実施形態に係るクライアント装置２０は、要求パターンを生成し、この要求パターンをノッキングパターンとしてポートノッキングを行う。図６は、本実施形態に係る情報処理システムの処理の流れの一例のシーケンス図である。以降では、一例として、クライアントアプリケーション２２はＷｅｂブラウザであり、サーバアプリケーション１３はＷｅｂサーバとして機能するプログラムであるものとして説明する。すなわち、クライアントアプリケーション２２は、サーバ装置１０のポート番号「８０」と通信を行うものとする。また、サーバ装置１０のすべてのポートは閉鎖されているものとする。
【００５２】
ステップＳ６０１において、クライアント装置２０のポート開放要求部２３は、要求パターンを生成する。このとき、ポート開放要求部２３は、時刻取得部２４が取得した時刻情報と、図５に示す要求パターン設定情報２５Ｄの３レコード目（開放要求ポート番号「８０」）の情報とに基づき要求パターンを生成する。具体的には、ポート開放要求部２３は、以下のようにして要求パターンを生成する。
（１）時刻取得部２４から現在時刻を示す時刻情報を取得する。
（２）時刻情報の値を所定の範囲で丸める。例えば、１分の範囲で丸める場合、秒数は切り捨てればよい。また、例えば、１０分の範囲で丸める場合、分を示す１の位を切り捨てればよい。また、前後１分の範囲や前後１０分の範囲等で値を丸めてもよい。このように時刻情報の値を所定の範囲で丸める理由は、サーバ装置１０とクライアント装置２０との間のパケットの到達時間を考慮したためである。すなわち、後述する処理においてサーバ装置１０が開放パターンを生成する際に取得する時刻情報と、上記でクライアント装置２０が取得した時刻情報との間に多少の差がある場合でも、同じパターンの要求パターン及び開放パターンが生成されるようにするためである。
（３）上記の（２）で値を丸めた時刻情報と、キー情報「ＩＤ００１」とに基づき、ポート数に指定された数（１０個）の乱数（この乱数が要求パターンのポート番号となる）を生成し、これを生成された順に番号付けることで要求パターンとする。これは、例えば、Ｃ言語のｓｒａｎｄ関数等を用いればよい。なお、ここでは、乱数生成方式を用いた場合の要求パターンの生成を説明したが、マッピングテーブルを用いることにより、同様に要求パターンを生成することができる。このようにして生成された要求パターンは、例えばＲＡＭ１０４等に格納される。
【００５３】
以上の（１）〜（３）により例えば図７に示すような要求パターンが生成されたものとして、以降説明する。このように、本実施形態に係るクライアント装置２０は、ポートノッキングのノッキングパターン（要求パターン）を時刻情報等に基づき動的に生成する。したがって、クライアント装置２０とサーバ装置１０間のパケットが盗聴等されていた場合においてもリプレイ攻撃による不正アクセスの防止を図ることができる。
【００５４】
ステップＳ６０２において、クライアント装置２０のポート開放要求部２３は、通信部２１を介して、宛先ポート番号として要求パターンに指定されているポート番号を指定した開放要求を、サーバ装置１０に対して送信する。例えば、ポート開放要求部２３は、１回目の開放要求には図７に示すように宛先ポート番号として「９６２９」を指定して、送信する。また、例えば、ポート開放要求部２３は、２回目の開放要求には図７に示すように宛先ポート番号として「１８５０」を指定して、送信する。このように、ポート開放要求部２３は、要求パターンに指定された回数（図７の例では１０回）の開放要求を順にサーバ装置１０に送信することでポートノッキングを行う。ここで、ポート開放要求部２３により送信される開放要求には、上記の宛先ポート番号に加えて、送信元のクライアント装置２０のアドレス情報（例えばＩＰアドレス）とが含まれる。なお、開放要求には、開放対象ポートのポート番号を含めてもよい。
【００５５】
ステップＳ６０３において、サーバ装置１０は、通信部１１を介して受信した開放要求に基づき、開放対象ポート（ここではポート番号「８０」）を開放させるか否かの判定を行う。また、サーバ装置１０は、判定結果に応じて該当のポートを開放する。このポート開放判定処理については、後述する。
【００５６】
ここで、サーバ装置１０は、開放対象ポートのポート番号を、クライアント装置２０の種類に応じて決定すればよい。すなわち、例えばクライアント装置２０がＰＣの場合は開放対象ポートのポート番号を「８０」、ＰＬＣの場合は開放対象ポートのポート番号を「５０００」等とすればよい。また、これに限られず、例えば、クライアント装置２０のＩＰアドレスに応じて開放対象ポートのポート番号を決定してもよいし、開放対象ポートのポート番号が予め決まっていてもよい。
【００５７】
ステップＳ６０４において、クライアント装置２０のクライアントアプリケーション２２は、通信部２１を介して、アプリケーションの処理要求をサーバ装置１０に対して送信する。すなわち、ポート開放要求部２３によるポートノッキングが行われた後、クライアントアプリケーション２２は、宛先ポート番号としてサーバアプリケーション１３と通信を行うポート番号（ここではポート番号「８０」）を指定したアプリケーションの処理要求をサーバ装置１０に対して送信する。
【００５８】
ステップＳ６０５において、サーバ装置１０は、通信部１１を介して受信したアプリケーションの処理要求に基づき、ポート開放判定処理を行う。このとき、上記のステップＳ６０３の処理において該当のポート（ここではポート番号「８０」）が開放された場合、サーバアプリケーション１３は、当該処理要求に係る処理を実行する。すなわち、該当のポートが開放されている場合は、本ステップではクライアント装置２０及びサーバ装置１０の間でアプリケーション処理が行われる。このポート開放判定処理についても、上記と同様に後述する。
【００５９】
ステップＳ６０６において、サーバ装置１０は、クライアント装置２０との間でアプリケーション処理が終了した場合、該当のポート（ここではポート番号「８０」）を閉鎖する。
【００６０】
以上のように、本実施形態に係るクライアント装置２０は、クライアントアプリケーション２２がサーバアプリケーション１３と通信を行うためのサーバ装置１０のポートの開放を、ポートノッキングにより行う。このとき、クライアント装置２０は、ポートノッキングのノッキングパターンを現在の時刻情報等に基づき動的に生成する。また、後述するようにサーバ装置１０においても、当該ノッキングパターンに対する正解パターン（開放パターン）を、動的に生成する。したがって、クライアント装置２０とサーバ装置１０間のパケット（開放要求パケット）が第三者により盗聴された場合においても、リプレイ攻撃による不正アクセスの防止を図ることができる。
【００６１】
≪ポート開放判定処理≫
次に、図６を用いて説明したステップＳ６０３及びステップＳ６０５のポート開放判定処理について図８を用いて説明する。本実施形態に係るサーバ装置１０は、ポートの開放要求又はアプリケーションの処理要求に関わらず、他の装置からパケットを受信した場合、以降で説明するポート開放判定処理を実行する。図８は、本実施形態に係るポート開放判定処理の一例のフローチャートである。なお、以降のステップＳ８０１〜ステップＳ８１０の処理は、サーバ装置１０の通信部１１がパケットを１つ受信する毎に実行される。したがって、例えば、サーバ装置１０の通信部１１がクライアント装置２０から複数の開放要求を受信した場合、受信した開放要求毎にそれぞれステップＳ８０１〜ステップＳ８１０を繰り返し実行する。
【００６２】
ステップＳ８０１において、サーバ装置１０のパケット処理部１２は、通信部１１を介して他の装置から受信したパケットをパケット記憶部１６に保存する。なお、パケット処理部１２は、受信したパケットがポートの開放要求であるかアプリケーションの処理要求であるか、さらにはそれ以外の要求等であるかに関わらずに、受信したパケットをすべてパケット記憶部１６に保存する。また、これは、受信したパケットの送信元がクライアント装置２０であるか、それ以外の他の装置であるかに関わらない。以降では、ステップＳ８１１の処理の説明を除き、パケット記憶部１６に保存されたパケットは、図６のステップＳ６０２の開放要求であるものとして説明する。すなわち、ここでは当該開放要求には、送信元のアドレス情報「１９２．１６８．０．１」とが含まれる。なお、当該開放要求のヘッダに指定された宛先ポート番号には、送信順に応じて図７に示すポート番号が指定されている。
【００６３】
ステップＳ８０２において、サーバ装置１０のパケット処理部１２は、上記のステップＳ８０１でパケット記憶部１６に記憶したパケットのヘッダから宛先ポート番号を取得し、当該ポート番号が開放されているポート番号であるか否かを判定する。図６のステップＳ６０２のように、サーバ装置１０がクライアント装置２０から開放要求を受信するような場合、受信した開放要求に指定された宛先ポート番号は開放されていないため、ステップＳ８０３に進む。一方、クライアント装置２０によるポートノッキングにより開放対象のポート番号が開放された後、図６のステップＳ６０４のように、当該開放されたポート番号を宛先ポート番号に指定したアプリケーションの処理要求を受信するような場合、ステップＳ８１１に進む。
【００６４】
ステップＳ８０３において、サーバ装置１０のポート制御部１４は、開放パターンの生成が必要か否かを判定する。開放パターンの生成が必要な場合とは、例えば、受信したパケットに含まれるＩＰアドレス及び開放要求ポート番号に対応する開放パターンが生成されていない場合である。また、後述するように、開放パターンは所定の範囲で値を丸めた時刻情報に基づいて生成されるため、開放パターンが生成されてから所定の時間（値を丸める範囲の時間）が経過している場合、既に生成済みの開放パターンを削除した上で新たに開放パターンを生成する（すなわち、開放パターンを更新する）。
【００６５】
ステップＳ８０４において、サーバ装置１０のポート制御部１４は、開放パターンを生成する。このとき、ポート制御部１４は、時刻取得部１５が取得した時刻情報と、図４に示す開放パターン設定情報１７Ｄとに基づき開放パターンを生成する。具体的には、ポート制御部１４は、以下のようにして開放パターンを生成する。
（１）時刻取得部１５から現在時刻を示す時刻情報を取得する。
（２）時刻情報の値を所定の範囲で丸める。これは、上述したようにクライアント装置２０が要求パターンを生成する場合と同様の方法で行う。
（３）上記のステップＳ８０１で保存したパケット（開放要求）に含まれる送信元のアドレス情報と、開放要求ポート番号とに基づき開放パターン設定情報１７Ｄのレコードを特定する。ここでは、送信元のアドレス情報は「１９２．１６８．０．１」、開放要求ポート番号は「８０」であるため図４の開放パターン設定情報１７Ｄの３行目のレコードが特定される。
（４）上記の（２）で値を丸めた時刻情報と、上記の（３）で特定したレコードのキー情報「ＩＤ００１」とに基づき、ポート数に指定された数（１０個）の乱数（この乱数が開放パターンのポート番号となる）を生成し、これを生成された順に番号付けることで開放パターンとする。これは、要求パターンの生成と同様に、例えば、Ｃ言語のｓｒａｎｄ関数等を用いればよい。なお、ここでは、乱数生成方式を用いた場合の要求パターンの生成を説明したが、マッピングテーブルを用いることにより、同様に開放パターンを生成することができる。このようにして生成された開放パターンは、例えばＲＡＭ１０４等に格納される。
【００６６】
以上の（１）〜（４）により例えば図９に示すような開放パターンが生成されたものとして、以降説明する。このように、本実施形態に係るサーバ装置１０は、クライアント装置２０が行うポートノッキングのノッキングパターン（要求パターン）に対する正解パターン（開放パターン）を時刻情報等に基づき動的に生成する。したがって、サーバ装置１０とクライアント装置２０間のパケットが盗聴等されていた場合においてもリプレイ攻撃による不正アクセスの防止を図ることができる。
【００６７】
ステップＳ８０５において、サーバ装置１０のポート制御部１４は、上記のステップＳ８０１で保存した開放要求（パケット）の宛先ポート番号と、上記のステップＳ８０４で生成した開放パターンの該当の受信順のポート番号とが一致するか否かを判定する。例えば、サーバ装置１０は、クライアント装置２０から開放要求を最初に受信した場合、この開放要求の宛先ポート番号と、開放パターンの受信順「１」に指定されているポート番号とが一致するか否かを判定する。同様に、サーバ装置１０は、クライアント装置２０から開放要求を次に受信した場合、この開放要求の宛先ポート番号と、開放パターンの受信順「２」に指定されているポート番号とが一致するか否かを判定する。なお、開放パターンの受信順は、例えば、現在の受信順の値を格納するカウンタ変数を用いて管理すればよい。
【００６８】
パケット記憶部１６に保存した開放要求（パケット）の宛先ポート番号と、開放パターンの該当の受信順に指定されたポート番号とが一致する場合、ステップＳ８０６に進む一方、一致しない場合、ステップＳ８０７に進む。
【００６９】
ステップＳ８０６において、サーバ装置１０のポート制御部１４は、開放パターンの受信順が最後であるか否かを判定する。例えば、図９に示す開放パターンの場合、受信順が「１０」である場合、最後であると判定される。これは、上述したカウント変数に格納された値を参照することで判定することができる。
【００７０】
ステップＳ８０７において、サーバ装置１０のポート制御部１４は、開放パターンの受信順をリセットする。すなわち、ポート制御部１４は、開放パターンの現在の受信順の値を格納するカウンタ変数に「１」を格納する。
【００７１】
ステップＳ８０８において、サーバ装置１０のポート制御部１４は、開放対象のポート番号（ここではポート番号「８０」）を開放する。これにより、クライアント装置２０のクライアントアプリケーション２２は、当該開放されたポートを介してサーバ装置１０のサーバアプリケーション１３と通信を行うことができるようになる。
【００７２】
ステップＳ８０９において、サーバ装置１０のポート制御部１４は、開放パターンの現在の受信順の値を次に進める。すなわち、ポート制御部は、上述したカウンタ変数の値をインクリメントすればよい。
【００７３】
ステップＳ８１０において、サーバ装置１０のパケット処理部１２は、上記のステップＳ８０１で保存したパケット（開放要求）を破棄（削除）する。これにより、サーバ装置１０の通信部１１がクライアント装置２０から１つの開放要求のパケットを受信した場合の処理が完了する。サーバ装置１０は、以上で説明した処理を、受信したすべての開放要求（パケット）に対して行う。これにより、クライアント装置２０は、サーバ装置１０のサーバアプリケーション１３と通信を行うためのポートを開放させることができる。そして、図６で説明したように、クライアント装置２０のクライアントアプリケーション２２は、アプリケーションの処理要求をサーバ装置１０に対して送信する。
【００７４】
ステップＳ８１１において、サーバ装置１０のサーバアプリケーション１３は、処理要求に応じた処理を実行する。すなわち、上記のステップＳ８０８で開放されたポート番号を宛先ポート番号に指定したパケット（アプリケーションの処理要求）を受信した場合、サーバ装置１０のパケット処理部１２は、当該パケットを該当のサーバアプリケーション１３に送信する。そして、該当のサーバアプリケーション１３は、受信したパケット（アプリケーションの処理要求）に応じた処理を実行する。これにより、サーバ装置１０とクライアント装置２０との間で、アプリケーション処理が行われる。なお、サーバ装置１０は、上記のステップＳ８０８で該当のポートを開放した場合、又はクライアント装置２０との間のアプリケーション処理が終了した場合、ＲＡＭ１０４等に記憶させておいた開放パターンを削除することが好ましい。これにより、サーバ装置１０とクライアント装置２０間のパケットが第三者により盗聴等されていた場合においてもリプレイ攻撃による不正アクセスの防止を図ることができる。
【００７５】
なお、サーバ装置１０が受信した開放要求には開放要求ポート番号が含まれていなくてもよい。このような場合、サーバ装置１０のポート制御部１４は、ステップＳ８０４の（３）において、開放要求に含まれる送信元アドレス情報に基づき開放パターン設定情報１７Ｄの１以上の対応するレコードを特定する。例えば、送信元のアドレス情報が「１９２．１６８．０．１」である場合、ポート制御部１４は、開放パターン設定情報１７Ｄの１行目〜３行目のレコードを特定する。次に、ポート制御部１４は、特定したすべてレコードに対してステップＳ８０４の（４）を行い、１以上の開放パターンをそれぞれ生成すればよい。そして、生成された１以上の開放パターンに対してそれぞれ上記のステップＳ８０５〜ステップＳ８１０の処理を行えばよい。
【００７６】
また、上記のステップＳ８０４において、図１０に示すような所定の時間間隔毎の開放パターンを生成してもよい。図１０に示す開放パターンは、時刻取得部１５から取得された現在時刻を示す時刻情報が「９：０６」であった場合に、前後１分間のそれぞれの時刻情報に基づき生成された開放パターンＡ及び開放パターンＢを示す一例である。このように、取得した現在時刻を示す時刻情報から所定の前後の範囲の時刻情報に基づき、それぞれ開放パターンを生成することで、例えば、サーバ装置１０とクライアント装置２０間のネットワークＮが輻輳等により遅延した場合においても適切に該当のポートを開放させることができる。例えば、図１０の例では、クライアント装置２０からサーバ装置１０に対する開放要求の遅延時間が１分以内であれば、ポートノッキングにより適切に該当のポートを開放させることができる。
【００７７】
＜まとめ＞
以上のように本実施形態に係る情報処理システム１は、クライアント装置２０とサーバ装置１０との間でポートノッキングを行うことにより、サーバ装置１０に搭載されたサーバアプリケーション１３と通信を行うためのポートを開放することができる。このとき、サーバ装置１０及びクライアント装置２０は、時刻情報等に基づき、ノッキングパターンを示す要求パターンと、ノッキングパターンに対する正解パターンを示す開放パターンとをそれぞれ動的に生成する。したがって、サーバ装置１０とクライアント装置２０間のパケットが第三者により盗聴等されていた場合においてもリプレイ攻撃による不正アクセスの防止を図ることができる。
【００７８】
また、本実施形態に係る情報処理システム１は、ポートノッキングを用いることにより、動的にポートの開放及び閉鎖を行うため、第三者によるポートスキャン等に応答することなく、機器（サーバ装置１０）を隠ぺいすることができる。
【００７９】
なお、ポート開放要求部２３は、第１の決定手段の一例である。ポート開放要求部２３及び通信部２１は、送信手段の一例である。ポート制御部１４は、第２の決定手段、判定手段、及び開放手段の一例である。
【００８０】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００８１】
１        情報処理システム
１０      サーバ装置
１１      通信部
１２      パケット処理部
１３      サーバアプリケーション
１４      ポート制御部
１５      時刻取得部
１６      パケット記憶部
１７      開放パターン設定記憶部
２０      クライアント装置
２１      通信部
２２      クライアントアプリケーション
２３      ポート開放要求部
２４      時刻取得部
２５      要求パターン設定記憶部
１００    コンピュータ
１０１    入力装置
１０２    表示装置
１０３    外部Ｉ／Ｆ
１０３ａ  記録媒体
１０４    ＲＡＭ
１０５    ＲＯＭ
１０６    ＣＰＵ
１０７    通信Ｉ／Ｆ
１０８    ＨＤＤ
Ｎ        ネットワーク
【図１】
0006409527.tif 000002
【図２】
0006409527.tif 000003
【図３】
0006409527.tif 000004
【図４】
0006409527.tif 000005
【図５】
0006409527.tif 000006
【図６】
0006409527.tif 000007
【図７】
0006409527.tif 000008
【図８】
0006409527.tif 000009
【図９】
0006409527.tif 000010
【図１０】
0006409527.tif 000011