(57)【要約】  状態再現装置（２００）は、取得シナリオに指定された遷移順序に従って、主装置（４２１）と各副装置（４２２、４２３）との間で、状態組を遷移させる通信を発生させる。状態再現装置は、主装置と各副装置との間で発生した各通信を記録する。状態再現装置は、取得シナリオに指定された各取得タイミングでスナップショット組を取得する。状態再現装置は、取得された各スナップショット組と記録された各通信とに基づいて、前記主装置と各副装置とのそれぞれを再現状態組における状態で再現する。
2019069462.tif 000002
【特許請求の範囲】
【請求項１】
主装置の状態と複数の副装置のそれぞれの状態との状態組を遷移させる遷移順序と、前記主装置のスナップショットと各副装置のスナップショットとのスナップショット組を取得する複数の取得タイミングと、が指定された取得シナリオを記憶する記憶部と、
前記取得シナリオに指定された遷移順序に従って、前記主装置と各副装置との間で、前記状態組を遷移させる通信を発生させる通信制御部と、
前記主装置と各副装置との間で発生した各通信を記録する通信記録部と、
前記取得シナリオに指定された各取得タイミングでスナップショット組を取得するスナップショット取得部と
を備える状態再現システム。
【請求項２】
前記主装置の状態と各副装置の状態との組が再現状態組として指定された場合に、取得された各スナップショット組と記録された各通信とに基づいて、前記主装置と各副装置とのそれぞれを前記再現状態組における状態で再現する再現部
を備える請求項１に記載の状態再現システム。
【請求項３】
前記再現部は、
前記主装置の状態と各副装置の状態とが前記再現状態組と一致するスナップショット組である該当スナップショット組が有るか判定し、
前記該当スナップショット組が無い場合に、各副装置の状態が前記再現状態組における状態と一致するスナップショット組を選択し、選択されたスナップショット組に含まれる各副装置のスナップショットを各副装置にロードし、いずれかのスナップショット組を代替スナップショット組として選択し、前記代替スナップショット組に含まれる前記主装置のスナップショットを前記主装置にロードし、前記代替スナップショット組が取得されたときから前記主装置の状態が前記再現状態組における状態と一致したときまでの間に発生した通信の記録を選択し、選択した記録に従って前記主装置に通信を発生させる
請求項２に記載の状態再現システム。
【請求項４】
前記主装置の状態を再現するために前記主装置から各副装置への通信が発生した場合に、各副装置の代わりに前記主装置に応答する代理応答部
を備える請求項３に記載の状態再現システム。
【請求項５】
前記再現部は、各副装置の動作を一時停止させた後に各副装置のスナップショットを各副装置にロードし、前記主装置と各副装置とのそれぞれを前記再現状態組における状態で再現した後に各副装置の動作を再開させる
請求項４に記載の状態再現システム。
【請求項６】
前記再現部は、前記主装置と各副装置とのそれぞれを前記再現状態組における状態で再現した後に前記主装置と各副装置とのセッションを切断し、前記主装置と各副装置とのセッションを切断した後に各副装置の動作を再開させる
請求項５に記載の状態再現システム。
【請求項７】
各副装置の動作が再開された後に前記主装置と各副装置との間で通信が発生した場合に、前記主装置で各副装置との間で通信される各通信パケットに含まれるシーケンス番号を書き替えて各通信パケットを中継する中継部
を備える請求項５または請求項６に記載の状態再現システム。
【請求項８】
主装置の状態と複数の副装置のそれぞれの状態との状態組を遷移させる遷移順序と、前記主装置のスナップショットと各副装置のスナップショットとのスナップショット組を取得する複数の取得タイミングと、が指定された取得シナリオを使用する状態再現プログラムであって、
前記取得シナリオに指定された遷移順序に従って、前記主装置と各副装置との間で、前記状態組を遷移させる通信を発生させる通信制御処理と、
前記主装置と各副装置との間で発生した各通信を記録する通信記録処理と、
前記取得シナリオに指定された各取得タイミングでスナップショット組を取得するスナップショット取得処理と
をコンピュータに実行させるための状態再現プログラム。
【請求項９】
主装置の状態と複数の副装置のそれぞれの状態との状態組を遷移させる遷移順序と、前記主装置のスナップショットと各副装置のスナップショットとのスナップショット組を取得する複数の取得タイミングと、が指定された取得シナリオを記憶する記憶部と、
前記取得シナリオに指定された遷移順序に従って、前記主装置と各副装置との間で、前記状態組を遷移させる通信を発生させる通信制御部と、
前記主装置と各副装置との間で発生した各通信を記録する通信記録部と、
前記取得シナリオに指定された各取得タイミングでスナップショット組を取得するスナップショット取得部と、
前記主装置の状態と各副装置の状態との組が再現状態組として指定された場合に、取得された各スナップショット組と記録された各通信とに基づいて、前記主装置と各副装置とのそれぞれを前記再現状態組における状態で再現する再現部と、
前記主装置と各副装置とのそれぞれが前記再現状態組における状態で再現された後に、前記主装置と各副装置とに対するセキュリティ検査を行うセキュリティ検査部と
を備えるセキュリティ検査システム。
【請求項１０】
主装置の状態と複数の副装置のそれぞれの状態との状態組を遷移させる遷移順序と、前記主装置のスナップショットと各副装置のスナップショットとのスナップショット組を取得する複数の取得タイミングと、が指定された取得シナリオを使用するセキュリティ検査プログラムであり、
前記取得シナリオに指定された遷移順序に従って、前記主装置と各副装置との間で、前記状態組を遷移させる通信を発生させる通信制御処理と、
前記主装置と各副装置との間で発生した各通信を記録する通信記録処理と、
前記取得シナリオに指定された各取得タイミングでスナップショット組を取得するスナップショット取得処理と、
前記主装置の状態と各副装置の状態との組が再現状態組として指定された場合に、取得された各スナップショット組と記録された各通信とに基づいて、前記主装置と各副装置とのそれぞれを前記再現状態組における状態で再現する再現処理と、
前記主装置と各副装置とのそれぞれが前記再現状態組における状態で再現された後に、前記主装置と各副装置とに対するセキュリティ検査を行うセキュリティ検査処理と
をコンピュータに実行させるためのセキュリティ検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ペネトレーションテストのようなセキュリティ検査を行うために各装置を所望の状態で再現するための技術に関するものである。
【背景技術】
【０００２】
サイバー攻撃の多くは、システムに搭載されるソフトウェアのバグを利用するものがほとんどである。
製品の出荷時には、ソフトウェアが仕様通りに実装されているか確認するための試験が行われる。
しかし、この試験では、ソフトウェアがセキュリティの観点から安全に実装されているかは確認されない。
そのため、出荷前におけるペネトレーションテストが近年注目を浴びている。ペネトレーションテストは、システムに侵入可能かどうか確認するための試験である。【０００３】
ペネトレーションテストでは、システムを動作させた状態で、様々なサイバー攻撃がシステムに対して行われる。そして、システムに侵入可能かどうか確認される。
ペネトレーションテストは、システムが動作する状態、いわゆるシステム試験の状態で実施される。そのため、システムが複数の計算機で構成される場合には、複数の計算機を準備する必要がある。【０００４】
ペネトレーションテストでは、システムのあらゆる状態においてシステムに侵入可能か確認する必要がある。
例えば、クライアントサーバーモデルのシステムでは、クライアントの状態によって、サーバの状態および挙動が変化する。そのため、ペネトレーションテストはクライアントの状態を変更しながら実施しなければならない。
システムに含まれる各実計算機の代わりに仮想計算機を利用する場合には、複数の実計算機の状態の組み合わせ毎に複数の仮想計算機のスナップショットを取得する必要がある。【０００５】
特許文献１は、スナップショット数を削減しつつシステムの状態を再現するための技術を開示している。
この技術では、あらかじめキャプチャされた通信パケットを用いて、スナップショットが取得された後の状態が、スナップショットがロードされた仮想計算機に送信される。【０００６】
特許文献２は、スナップショット数を削減しつつシステムの状態を再現するための技術を開示している。
この技術では、障害が発生した場合に直前のスナップショットがロードされる。そして、障害が発生した時点までの通信パケットの記録に基づいて、障害が発生した時点の状態が再現される。【０００７】
特許文献３は、スナップショットのサイズを削減するための技術を開示している。
この技術では、システムの状態がツリー構造で表現される。そして、再現される状態のノードの親ノードが選択され、親ノードの状態からの差分がスナップショットとして利用される。【０００８】
特許文献４は、スナップショット数を削減しつつ状態の再現までの時間を短くするための技術を開示している。
この技術では、システムの状態遷移の時間および計算量が遷移コストとして定義される。そして、遷移コストが大きいスナップショット（遷移直後のスナップショット）を残して、短時間での再現が可能なスナップショットが削除される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−０８０７０５号公報
【特許文献２】国際公開２０１０／１３４１７７号
【特許文献３】特開２０１３−１２０４４０号公報
【特許文献４】国際公開２０１５／００８３７７号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来の技術では、状態が遷移しない計算機のスナップショットも取得する必要があるため、非効率的であった。【００１１】
本発明は、スナップショットの数を削減しつつ、各装置を所望の状態で再現できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明の状態再現システムは、
主装置の状態と複数の副装置のそれぞれの状態との状態組を遷移させる遷移順序と、前記主装置のスナップショットと各副装置のスナップショットとのスナップショット組を取得する複数の取得タイミングと、が指定された取得シナリオを記憶する記憶部と、
前記取得シナリオに指定された遷移順序に従って、前記主装置と各副装置との間で、前記状態組を遷移させる通信を発生させる通信制御部と、
前記主装置と各副装置との間で発生した各通信を記録する通信記録部と、
前記取得シナリオに指定された各取得タイミングでスナップショット組を取得するスナップショット取得部とを備える。
【発明の効果】
【００１３】
本発明によれば、取得シナリオに従ってスナップショット組が取得される。そのため、取得シナリオに複数の取得タイミングが適切に指定されることにより、各副装置の状態毎に各副装置のスナップショットを取得することが可能となる。また、主装置のスナップショットは、各副装置のスナップショットと同じタイミングで取得される。さらに、主装置のスナップショットの不足を補うため、主装置４２１と各副装置との間で発生した通信が記録される。これにより、スナップショットの数を削減しつつ、主装置と各副装置とのそれぞれを再現状態組における状態で再現することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１における状態再現システム１００の構成図。
【図２】実施の形態１における状態再現装置２００の構成図。
【図３】実施の形態１における代理応答装置３００の構成図。
【図４】実施の形態１における対象動作装置４００の構成図。
【図５】実施の形態１における状態再現方法のフローチャート。
【図６】実施の形態１におけるスナップショット取得工程のフローチャート。
【図７】実施の形態１におけるスナップショット取得工程の概要図。
【図８】実施の形態１における状態再現工程のフローチャート。
【図９】実施の形態２における状態再現工程のフローチャート。
【図１０】実施の形態３における代理応答装置３００の構成図。
【図１１】実施の形態４におけるセキュリティ検査システム１１０の構成図。
【図１２】実施の形態４におけるセキュリティ検査装置５００の構成図。
【図１３】実施の形態４におけるセキュリティ検査方法のフローチャート。
【図１４】実施の形態における状態再現装置２００のハードウェア構成図。
【図１５】実施の形態における代理応答装置３００のハードウェア構成図。
【図１６】実施の形態における対象動作装置４００のハードウェア構成図。
【図１７】実施の形態におけるセキュリティ検査装置５００のハードウェア構成図。
【発明を実施するための形態】
【００１５】
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１６】
実施の形態１．
状態再現システム１００について、図１から図８に基づいて説明する。
【００１７】
＊＊＊構成の説明＊＊＊
図１に基づいて、状態再現システム１００の構成を説明する。
状態再現システム１００は、スナップショットと通信記録とに基づいて、主装置４２１と第１副装置４２２と第２副装置４２３とのそれぞれを所望の状態で再現するシステムである。
主装置４２１は、第１副装置４２２および第２副装置４２３と通信を行う装置である。
第１副装置４２２および第２副装置４２３は、主装置４２１と通信を行う装置である。
例えば、主装置４２１は、ＨＭＩ（Ｈｕｍａｎ  Ｍａｃｈｉｎｅ  Ｉｎｔｅｒｆａｃｅ）と呼ばれる装置である。
例えば、各副装置（４２２、４２３）は、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）と呼ばれる装置である。
【００１８】
状態再現システム１００は、状態再現装置２００と代理応答装置３００と対象動作装置４００とを備える。
状態再現装置２００、代理応答装置３００および対象動作装置４００は、通信路１０１を介して互いに通信を行う。
【００１９】
対象動作装置４００は、主装置４２１と第１副装置４２２と第２副装置４２３とを動作させる。
具体的には、対象動作装置４００は、主装置４２１として第１仮想計算機４１１を動作させ、第１副装置４２２として第２仮想計算機４１２を動作させ、第２副装置４２３を第３仮想計算機４１３として動作させる。
【００２０】
図２に基づいて、状態再現装置２００の構成を説明する。
状態再現装置２００は、プロセッサ２０１とメモリ２０２と補助記憶装置２０３と通信装置２０４と入出力インタフェース２０５といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００２１】
プロセッサ２０１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。例えば、プロセッサ２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、またはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
メモリ２０２は揮発性の記憶装置である。メモリ２０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ２０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリ２０２に記憶されたデータは必要に応じて補助記憶装置２０３に保存される。
補助記憶装置２０３は不揮発性の記憶装置である。例えば、補助記憶装置２０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、またはフラッシュメモリである。補助記憶装置２０３に記憶されたデータは必要に応じてメモリ２０２にロードされる。
通信装置２０４は通信を行う装置、すなわち、レシーバ及びトランスミッタである。例えば、通信装置２０４は通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力インタフェース２０５は入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース２０５はＵＳＢ端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。ＵＳＢはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略称である。
【００２２】
状態再現装置２００は、通信制御部２１１と通信記録部２１２とスナップショット取得部２１３と再現部２２１といった要素を備える。これらの要素はソフトウェアで実現される。
【００２３】
補助記憶装置２０３には、通信制御部２１１とスナップショット取得部２１３と再現部２２１としてコンピュータを機能させるための状態再現プログラムが記憶されている。状態再現プログラムは、メモリ２０２にロードされて、プロセッサ２０１によって実行される。
さらに、補助記憶装置２０３にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。ＯＳの少なくとも一部は、メモリ２０２にロードされて、プロセッサ２０１によって実行される。
つまり、プロセッサ２０１は、ＯＳを実行しながら、状態再現プログラムを実行する。
状態再現プログラムを実行して得られるデータは、メモリ２０２、補助記憶装置２０３、プロセッサ２０１内のレジスタまたはプロセッサ２０１内のキャッシュメモリといった記憶装置に記憶される。
【００２４】
メモリ２０２はデータを記憶する記憶部２９１として機能する。但し、他の記憶装置が、メモリ２０２の代わりに、又は、メモリ２０２と共に、記憶部２９１として機能してもよい。
通信装置２０４はデータを通信する通信部２９２として機能する。状態再現装置２００によって送受信されるデータは通信部２９２を介して送受信される。
入出力インタフェース２０５は、入力を受け付ける受付部２９３として機能する。
【００２５】
状態再現装置２００は、プロセッサ２０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ２０１の役割を分担する。
【００２６】
状態再現プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【００２７】
図３に基づいて、代理応答装置３００の構成を説明する。
代理応答装置３００は、プロセッサ３０１とメモリ３０２と補助記憶装置３０３と通信装置３０４といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００２８】
プロセッサ３０１は、演算処理を行うＩＣであり、他のハードウェアを制御する。例えば、プロセッサ３０１は、ＣＰＵ、ＤＳＰ、またはＧＰＵである。
メモリ３０２は揮発性の記憶装置である。メモリ３０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ３０２はＲＡＭである。メモリ３０２に記憶されたデータは必要に応じて補助記憶装置３０３に保存される。
補助記憶装置３０３は不揮発性の記憶装置である。例えば、補助記憶装置３０３は、ＲＯＭ、ＨＤＤ、またはフラッシュメモリである。補助記憶装置３０３に記憶されたデータは必要に応じてメモリ３０２にロードされる。
通信装置３０４は通信を行う装置、すなわち、レシーバ及びトランスミッタである。例えば、通信装置３０４は通信チップまたはＮＩＣである。
【００２９】
代理応答装置３００は、代理応答部３２１を備える。代理応答部３２１はソフトウェアで実現される。
【００３０】
補助記憶装置３０３には、代理応答部３２１としてコンピュータを機能させるための代理応答プログラムが記憶されている。代理応答プログラムは、メモリ３０２にロードされて、プロセッサ３０１によって実行される。
さらに、補助記憶装置３０３にはＯＳが記憶されている。ＯＳの少なくとも一部は、メモリ３０２にロードされて、プロセッサ３０１によって実行される。
つまり、プロセッサ３０１は、ＯＳを実行しながら、代理応答プログラムを実行する。
代理応答プログラムを実行して得られるデータは、メモリ３０２、補助記憶装置３０３、プロセッサ３０１内のレジスタまたはプロセッサ３０１内のキャッシュメモリといった記憶装置に記憶される。
【００３１】
メモリ３０２はデータを記憶する記憶部３９１として機能する。但し、他の記憶装置が、メモリ３０２の代わりに、又は、メモリ３０２と共に、記憶部３９１として機能してもよい。
通信装置３０４はデータを通信する通信部３９２として機能する。代理応答装置３００によって送受信されるデータは通信部３９２を介して送受信される。
【００３２】
代理応答装置３００は、プロセッサ３０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ３０１の役割を分担する。
【００３３】
代理応答プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【００３４】
図４に基づいて、対象動作装置４００の構成を説明する。
対象動作装置４００は、プロセッサ４０１とメモリ４０２と補助記憶装置４０３と通信装置４０４といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００３５】
プロセッサ４０１は、演算処理を行うＩＣであり、他のハードウェアを制御する。例えば、プロセッサ４０１は、ＣＰＵ、ＤＳＰ、またはＧＰＵである。
メモリ４０２は揮発性の記憶装置である。メモリ４０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ４０２はＲＡＭである。メモリ４０２に記憶されたデータは必要に応じて補助記憶装置４０３に保存される。
補助記憶装置４０３は不揮発性の記憶装置である。例えば、補助記憶装置４０３は、ＲＯＭ、ＨＤＤ、またはフラッシュメモリである。補助記憶装置４０３に記憶されたデータは必要に応じてメモリ４０２にロードされる。
通信装置４０４は通信を行う装置、すなわち、レシーバ及びトランスミッタである。例えば、通信装置４０４は通信チップまたはＮＩＣである。
【００３６】
対象動作装置４００は、第１仮想計算機４１１と第２仮想計算機４１２と第３仮想計算機４１３といった要素を備える。これらの要素はソフトウェアで実現される。
【００３７】
補助記憶装置４０３には、第１仮想計算機４１１と第２仮想計算機４１２と第３仮想計算機４１３としてコンピュータを機能させるための対象動作プログラムが記憶されている。対象動作プログラムは、メモリ４０２にロードされて、プロセッサ４０１によって実行される。
さらに、補助記憶装置４０３にはＯＳが記憶されている。ＯＳの少なくとも一部は、メモリ４０２にロードされて、プロセッサ４０１によって実行される。
つまり、プロセッサ４０１は、ＯＳを実行しながら、対象動作プログラムを実行する。
対象動プログラムを実行して得られるデータは、メモリ４０２、補助記憶装置４０３、プロセッサ４０１内のレジスタまたはプロセッサ４０１内のキャッシュメモリといった記憶装置に記憶される。
【００３８】
メモリ４０２はデータを記憶する記憶部４９１として機能する。但し、他の記憶装置が、メモリ４０２の代わりに、又は、メモリ４０２と共に、記憶部４９１として機能してもよい。
通信装置４０４はデータを通信する通信部４９２として機能する。対象動作装置４００によって送受信されるデータは通信部４９２を介して送受信される。
【００３９】
対象動作装置４００は、プロセッサ４０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ４０１の役割を分担する。
【００４０】
対象動作プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【００４１】
＊＊＊動作の説明＊＊＊
状態再現システム１００の動作は状態再現方法に相当する。また、状態再現方法の手順は状態再現プログラムの手順に相当する。
状態再現プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【００４２】
図５に基づいて、状態再現方法を説明する。
まず、スナップショット取得工程が実行される。
その後、状態再現工程が実行される。
【００４３】
スナップショット取得工程の概要を説明する。
スナップショット取得工程では、取得シナリオが実行される。
取得シナリオは、利用者によって作成され、状態再現装置２００の記憶部２９１に予め記憶される。
取得シナリオには、遷移順序と複数の取得タイミングとが指定されている。
遷移順序は、状態組を遷移させる順序である。
状態組は、主装置４２１の状態と各副装置（４２２、４２３）の状態との組である。
取得タイミングは、スナップショット組を取得するタイミングである。
スナップショット組は、主装置４２１のスナップショットと各副装置（４２２、４２３）のスナップショットとの組である。
【００４４】
スナップショット取得工程において、状態再現システム１００は以下のように動作する。
通信制御部２１１は、取得シナリオに指定された遷移順序に従って、主装置４２１と各副装置との間で、状態組を遷移させる通信を発生させる。
通信記録部２１２は、主装置４２１と各副装置との間で発生した各通信を記録する。
スナップショット取得部２１３は、取得シナリオに指定された各取得タイミングでスナップショット組を取得する。
【００４５】
図６に基づいて、スナップショット取得工程の手順を説明する。
ステップＳ１１１において、通信制御部２１１は、取得シナリオを参照し、次の通信を発生させる。
【００４６】
具体的には、通信制御部２１１は以下のように次の通信を発生させる。
取得シナリオは、状態組の遷移順に、状態組と状態遷移命令とを示す。状態遷移命令は、状態組を遷移させるための命令である。
通信制御部２１１は、状態組の遷移順に次の状態遷移命令を選択し、次の状態遷移命令を主装置４２１に送信する。
主装置４２１は、次の状態遷移命令を受信し、次の状態遷移命令に従って通信パケットを各副装置に送信する。各副装置は、主装置４２１からの通信パケットを受信し、応答の通信パケットを主装置４２１に送信する。主装置４２１は、応答の通信パケットを受信する。
【００４７】
ステップＳ１１２において、通信記録部２１２は、発生した通信を記録する。
【００４８】
具体的には、通信記録部２１２は以下のように通信を記録する。
通信が発生すると、通信パケットが通信路１０１を流れる。
通信記録部２１２は、通信路１０１に流れる各通信パケットをキャプチャし、キャプチャした各通信パケットの内容を状態組と状態遷移命令とに対応付けて通信表に記録する。
通信表は、状態組の遷移順に、状態組と、状態遷移命令と、主装置４２１における通信パケットの入出力の内容とを互いに対応付けて示す表である。通信表は、記憶部２９１に記憶される。
主装置４２１において、出力となる通信パケットは、主装置４２１から各副装置への通信パケットである。
主装置４２１において、入力となる通信パケットは、各副装置から主装置４２１への通信パケットである。
【００４９】
ステップＳ１１３において、スナップショット取得部２１３は、取得シナリオを参照し、現在が取得タイミングであるか判定する。
現在が取得タイミングである場合、処理はステップＳ１１４に進む。
現在が取得タイミングでない場合、処理はステップＳ１１５に進む。
【００５０】
ステップＳ１１４において、スナップショット取得部２１３は、スナップショット組を取得する。
【００５１】
具体的には、スナップショット取得部２１３は以下のようにスナップショット組を取得する。
取得シナリオには、取得タイミング毎に、仮想計算機組が指定されている。仮想計算機組は、仮想計算機（４１１、４１２、４１３）の組である。
スナップショット取得部２１３は、取得シナリオを参照し、取得タイミングに対応する仮想計算機組を選択し、選択した仮想計算機組の各仮想計算機にスナップショットの取得を要求する。
そして、要求先の各仮想計算機は、スナップショットを取得し、取得したスナップショットを記憶部４９１に記憶する。
要求先の仮想計算機が第１仮想計算機４１１である場合、第１仮想計算機４１１は、主装置４２１のスナップショットを取得し、取得したスナップショットを記憶部４９１に記憶する。
要求先の仮想計算機が第２仮想計算機４１２である場合、第２仮想計算機４１２は、第１副装置４２２のスナップショットを取得し、取得したスナップショットを記憶部４９１に記憶する。
要求先の仮想計算機が第３仮想計算機４１３である場合、第３仮想計算機４１３は、第２副装置４２３のスナップショットを取得し、取得したスナップショットを記憶部４９１に記憶する。
【００５２】
ステップＳ１１５において、通信制御部２１１は、取得シナリオが終了したか判定する。
取得シナリオが終了していない場合、処理はステップＳ１１１に進む。
取得シナリオが終了した場合、処理は終了する。
【００５３】
図７に基づいて、スナップショット取得工程の具体例を説明する。
例えば、取得シナリオには、図７に示す内容が記載されている。
【００５４】
主装置４２１は、状態（１）から状態（６）までの６つの状態を有する。
第１副装置４２２は、オフ状態とオン状態とスタンバイ状態との３つの状態を有する。
第２副装置４２３は、オフ状態とオン状態との２つの状態を有する。
【００５５】
まず、通信制御部２１１は、主装置４２１と第１副装置４２２との間で通信を発生させる。さらに、通信制御部２１１は、主装置４２１と第２副装置４２３との間で通信を発生させる。これにより、主装置４２１は状態（１）になり、第１副装置４２２はオフ状態になり、第２副装置４２３はオフ状態になる。そして、通信記録部２１２は、発生した各通信を記録する。
次に、スナップショット取得部２１３は、第１スナップショット組（ＳＮＡＰ（１））を取得する。第１スナップショット組は、状態（１）における主装置４２１のスナップショットと、オフ状態における第１副装置４２２のスナップショットと、オフ状態における第２副装置４２３のスナップショットとを含む。
【００５６】
次に、通信制御部２１１は、主装置４２１と第２副装置４２３との間で通信を発生させる。これにより、主装置４２１は状態（２）になり、第２副装置４２３はオン状態になる。そして、通信記録部２１２は、発生した通信を記録する。
【００５７】
次に、通信制御部２１１は、主装置４２１と第１副装置４２２との間で通信を発生させる。これにより、主装置４２１は状態（３）になり、第１副装置４２２はオン状態になる。そして、通信記録部２１２は、発生した通信を記録する。
次に、スナップショット取得部２１３は、第２スナップショット組（ＳＮＡＰ（２））を取得する。第２スナップショット組は、状態（３）における主装置４２１のスナップショットと、オン状態における第１副装置４２２のスナップショットと、オン状態における第２副装置４２３のスナップショットとを含む。
【００５８】
次に、通信制御部２１１は、主装置４２１と第２副装置４２３との間で通信を発生させる。これにより、主装置４２１は状態（４）になり、第２副装置４２３はオフ状態になる。そして、通信記録部２１２は、発生した通信を記録する。
【００５９】
次に、通信制御部２１１は、主装置４２１と第１副装置４２２との間で通信を発生させる。これにより、主装置４２１は状態（５）になり、第１副装置４２２はスタンバイ状態になる。そして、通信記録部２１２は、発生した通信を記録する。
次に、スナップショット取得部２１３は、第３スナップショット組（ＳＮＡＰ（３））を取得する。第３スナップショット組は、状態（５）における主装置４２１のスナップショットと、スタンバイ状態における第１副装置４２２のスナップショットとを含む。
【００６０】
最後に、通信制御部２１１は、主装置４２１と第２副装置４２３との間で通信を発生させる。これにより、主装置４２１は状態（６）になり、第２副装置４２３はオン状態になる。そして、通信記録部２１２は、発生した通信を記録する。
【００６１】
取得シナリオには、各副装置の全ての状態が網羅されるように、複数の取得タイミングが指定される。
図７において、第１副装置４２２の３つの状態は以下のように網羅されている。
オフ状態における第１副装置４２２のスナップショットは、第１スナップショット組（ＳＮＡＰ（１））に含まれる。
オン状態における第１副装置４２２のスナップショットは、第２スナップショット組（ＳＮＡＰ（２））に含まれる。
スタンバイ状態における第１副装置４２２のスナップショットは、第３スナップショット組（ＳＮＡＰ（３））に含まれる。
図７において、第２副装置４２３の２つの状態は以下のように網羅されている。
オフ状態における第２副装置４２３のスナップショットは、第１スナップショット組（ＳＮＡＰ（１））に含まれる。
オン状態における第２副装置４２３のスナップショットは、第２スナップショット組（ＳＮＡＰ（２））に含まれる。
【００６２】
また、取得シナリオには、各副装置の状態が重複しないように、各取得タイミングに対応付けて各副装置のスナップショットの要否が指定される。
図７において、第２副装置４２３の２つの状態は、第１スナップショット組（ＳＮＡＰ（１））と第２スナップショット組（ＳＮＡＰ（２））とによって網羅される。そのため、取得シナリオには、第３スナップショット組（ＳＮＡＰ（３））の取得タイミングでの第２副装置４２３のスナップショットの取得が不要である旨が指定される。したがって、第３スナップショット組（ＳＮＡＰ（３））には、第２副装置４２３のスナップショットが含まれない。
【００６３】
状態再現工程の概要を説明する。
状態再現工程では、主装置４２１と各副装置とのそれぞれが再現状態組における状態で再現される。
再現状態組は、指定された状態組である。再現状態組は、利用者によって指定され、受付部２９３によって受け付けられる。
再現部２２１は、取得された各スナップショット組と記録された各通信とに基づいて、主装置４２１と各副装置とのそれぞれを再現状態組における状態で再現する。
代理応答部３２１は、主装置４２１の状態を再現するために主装置４２１から各副装置への通信が発生した場合に、各副装置の代わりに主装置４２１に応答する。
【００６４】
図８に基づいて、状態再現工程の手順を説明する。
前述のスナップショット取得工程において状態再現装置２００の記憶部２９１に記憶された通信表は、代理応答装置３００の記憶部３９１にコピーされ、状態再現工程で使用される。
また、状態再現工程の開始前に、再現状態組が受付部２９３によって受け付けられる。
【００６５】
ステップＳ１２０において、再現部２２１は、取得シナリオを参照し、各取得タイミングにおける状態組を特定する。
【００６６】
ステップＳ１２１において、再現部２２１は、スナップショット取得工程で取得された複数のスナップショット組の中に、該当スナップショット組が有るか判定する。
該当スナップショット組は、主装置４２１の状態と各副装置の状態とが再現状態組と一致するスナップショット組である。
【００６７】
具体的には、再現部２２１は、各取得タイミングにおける状態組を再現状態組と比較する。
いずれかの取得タイミングにおける状態組が再現状態組と一致する場合、その取得タイミングで取得されたスナップショット組が該当スナップショット組である。つまり、この場合、該当スナップショット組が有る。
いずれの取得タイミングにおける状態組も再現状態組と一致しない場合、該当スナップショットが無い。
【００６８】
該当スナップショット組が有る場合、処理はステップＳ１３０に進む。
該当スナップショット組が無い場合、処理はステップＳ１２２に進む。
【００６９】
例えば、図７において、再現状態組が、主装置４２１の状態（４）と第１副装置４２２のオン状態と第２副装置４２３のオフ状態との組であると仮定する。
この場合、該当スナップショット組は、主装置４２１が状態（４）であり、且つ、第１副装置４２２がオン状態であり、且つ、第２副装置４２３がオフ状態であるときに取得されたスナップショット組である。
しかし、主装置４２１が状態（４）であり、且つ、第１副装置４２２がオン状態であり、且つ、第２副装置４２３がオフ状態であるときに、スナップショット組は取得されていない。
したがって、該当スナップショット組は無い。
【００７０】
ステップＳ１２２において、再現部２２１は、各副装置用のスナップショット組を選択する。
各副装置用のスナップショット組は、各副装置の状態が再現状態組における状態と一致するスナップショット組である。
【００７１】
具体的には、再現部２２１は、副装置毎に、各取得タイミングにおける副装置の状態を再現状態組における副装置の状態と比較する。
そして、再現部２２１は、副装置毎に、副装置の状態が再現状態組における状態と一致する取得タイミングを選択する。
選択された取得タイミングで取得されたスナップショット組が副装置用のスナップショット組である。
【００７２】
例えば、図７において、再現状態組における第１副装置４２２の状態がオン状態であると仮定する。この場合、第１副装置４２２用のスナップショット組は、第２スナップショット組（ＳＮＡＰ（２））である。
例えば、図７において、再現状態組における第２副装置４２３の状態がオフ状態であると仮定する。この場合、第２副装置４２３用のスナップショット組は、第１スナップショット組（ＳＮＡＰ（１））である。
【００７３】
ステップＳ１２３において、再現部２２１は、各副装置の動作を一時停止させて、各副装置に該当スナップショットをロードする。
一時停止している間、各副装置は通信を行わない。
副装置の該当スナップショットは、副装置用のスナップショット組に含まれる副装置のスナップショットである。
【００７４】
具体的には、再現部２２１は、副装置毎に、一時停止命令とロード命令とを順番に仮想計算機に送信する。ロード命令は、副装置用のスナップショット組が取得された取得タイミングを指定する。
各仮想計算機は、一時停止命令を受信し、副装置の動作を一時停止させる。次に、各仮想計算機は、ロード命令を受信する。各仮想計算機は、スナップショット取得工程で取得した複数のスナップショットの中から、ロード命令で指定された取得タイミングで取得されたスナップショットを選択する。そして、各仮想計算機は、選択したスナップショットを副装置用の記憶領域にロードする。
【００７５】
つまり、再現部２２１は、第１副装置４２２用のスナップショット組が取得された取得タイミングが指定されたロード命令を第２仮想計算機４１２に送信する。第２仮想計算機４１２は、第１副装置４２２を一時停止し、ロード命令で指定された取得タイミングで取得したスナップショットを選択し、選択したスナップショットを第１副装置４２２用の記憶領域にロードする。
例えば、図７において、第１副装置４２２用のスナップショット組が第２スナップショット組（ＳＮＡＰ（２））であると仮定する。
この場合、再現部２２１は、第２スナップショット組の取得タイミングが指定されたロード命令を第２仮想計算機４１２に送信する。そして、第２仮想計算機４１２は、第１副装置４２２を一時停止し、第２スナップショット組に含まれる第１副装置４２２のスナップショットを第１副装置４２２用の記憶領域にロードする。
【００７６】
また、再現部２２１は、第２副装置４２３用のスナップショット組が取得された取得タイミングが指定されたロード命令を第３仮想計算機４１３に送信する。第３仮想計算機４１３は、第２副装置４２３を一時停止し、ロード命令で指定された取得タイミングで取得したスナップショットを選択し、選択したスナップショットを第２副装置４２３用の記憶領域にロードする。
例えば、図７において、第２副装置４２３用のスナップショット組が第１スナップショット組（ＳＮＡＰ（１））であると仮定する。
この場合、再現部２２１は、第１スナップショット組の取得タイミングが指定されたロード命令を第３仮想計算機４１３に送信する。そして、第３仮想計算機４１３は、第２副装置４２３を一時停止し、第１スナップショット組に含まれる第２副装置４２３のスナップショットを第２副装置４２３用の記憶領域にロードする。
【００７７】
ステップＳ１２４において、再現部２２１は、代替スナップショット組を選択する。
代替スナップショット組は、いずれかのスナップショット組である。
【００７８】
例えば、再現部２２１は、取得シナリオを参照し、主装置４２１の状態が再現状態組における状態に遷移する直前の取得タイミングを選択する。
この直前の取得タイミングは、主装置４２１の状態が再現状態組における状態に遷移する以前の取得タイミングのうち、主装置４２１の状態が再現状態組における状態に遷移するときに最も近い取得タイミングである。
この直線の取得タイミングで取得されたスナップショット組が代替スナップショット組である。
【００７９】
例えば、図７において、再現状態組における主装置４２１の状態が状態（４）であると仮定する。
この場合、主装置４２１が状態（４）に遷移する直線の取得タイミングは、第２スナップショット組（ＳＮＡＰ（２））の取得タイミングである。
つまり、代替スナップショット組は、第２スナップショット組である。
【００８０】
ステップＳ１２５において、再現部２２１は、主装置４２１に代替スナップショットをロードする。
代替スナップショットは、代替スナップショット組に含まれる主装置４２１のスナップショットである。
【００８１】
具体的には、再現部２２１は、代替スナップショット組の取得タイミングが指定されたロード命令を第１仮想計算機４１１に送信する。第１仮想計算機４１１は、ロード命令で指定された取得タイミングで取得したスナップショットを選択し、選択したスナップショットを主装置４２１用の記憶領域にロードする。
【００８２】
例えば、図７において、代替スナップショット組が第２スナップショット組（ＳＮＡＰ（２））であると仮定する。
この場合、再現部２２１は、第２スナップショット組の取得タイミングが指定されたロード命令を第１仮想計算機４１１に送信する。そして、第１仮想計算機４１１は、第２スナップショット組に含まれる主装置４２１のスナップショットを主装置４２１用の記憶領域にロードする。
【００８３】
ステップＳ１２６において、再現部２２１は、スナップショット取得工程で得られた通信記録から、補足通信の記録を選択する。
補足通信は、代替スナップショット組が取得されたときから主装置４２１の状態が再現状態組における状態と一致したときまでの間に発生した通信である。
【００８４】
具体的には、再現部２２１は、スナップショット取得工程で生成された通信表から補足通信の記録を選択する。
【００８５】
例えば、図７において、代替スナップショット組が第２スナップショット組（ＳＮＡＰ（２））であり、再現状態組における主装置４２１の状態が状態（４）であると仮定する。
この場合、補足通信は、第２スナップショット組の取得タイミングから主装置４２１が状態（４）になるときまでに、主装置４２１と第２副装置４２３との間で行われた通信である。
【００８６】
ステップＳ１２７において、再現部２２１は、選択した記録に従って主装置４２１に補足通信を発生させる。
【００８７】
具体的には、再現部２２１は、選択した記録に対応付けられた状態遷移命令を通信表から選択し、選択した状態遷移命令を主装置４２１に送信する。主装置４２１は、状態遷移命令を受信し、状態遷移命令に従って通信パケットを各副装置に送信する。
各副装置は該当スナップショットがロードされるときに一時停止しているため、各副装置は通信パケットを受信しない。したがって、各副装置は、応答の通信パケットを主装置４２１に送信しない。
【００８８】
ステップＳ１２８において、代理応答部３２１は、主装置４２１と代理応答通信を行う。
代理通信応答は、各副装置の代わりに主装置４２１と行う補足通信である。
【００８９】
具体的には、代理応答部３２１は以下のように代理応答通信を行う。
まず、代理応答部３２１は、主装置４２１からの通信パケットを受信する。
次に、代理応答部３２１は、受信した通信パケットに相当する通信パケットを通信表から選択する。
次に、代理応答部３２１は、選択した通信パケットに対応する応答の通信パケットを通信表から選択する。
そして、代理応答部３２１は、選択した応答の通信パケットに相当する通信パケットを主装置４２１に送信する。
主装置４２１は、代理応答部３２１からの通信パケットを副装置からの通信パケットとして受信する。
【００９０】
代理応答通信が行わることにより、主装置４２１の状態は、再現状態組における状態に遷移する。
その結果、主装置４２１と各副装置とのそれぞれが再現状態組における状態で再現される。
【００９１】
ステップＳ１２９において、再現部２２１は、各副装置の動作を再開させる。
具体的には、再現部２２１は、副装置毎に、再開命令を仮想計算機に送信する。各仮想計算機は、再開命令を受信し、副装置の動作を再開させる。
【００９２】
ステップＳ１３０において、再現部２２１は、主装置４２１および各副装置に該当スナップショットをロードする。ロードの方法は、ステップＳ１２３およびステップＳ１２５と同じである。各副装置の一時停止は不要である。
この該当スナップショットは、該当スナップショット組に含まれるスナップショットである。
【００９３】
該当スナップショット組にいずれかの副装置のスナップショットが含まれない場合、再現部２２１は、ステップＳ１２２およびステップＳ１２３と同じ方法で、その副装置に該当スナップショットをロードする。
【００９４】
＊＊＊実施の形態１の効果＊＊＊
実施の形態１では、各副装置の状態毎に各副装置のスナップショットが１つずつ取得される。主装置４２１のスナップショットは、各副装置のスナップショットと同じタイミングで取得される。さらに、主装置４２１のスナップショットの不足を補うため、主装置４２１と各副装置との間で発生した通信が記録される。
これにより、スナップショットの数を削減しつつ、主装置４２１と各副装置とのそれぞれを再現状態組における状態で再現することが可能となる。
【００９５】
＊＊＊他の構成＊＊＊
スナップショット取得工程（図６参照）において最後の取得タイミングでスナップショット組が取得された場合（Ｓ１１４）、通信制御部２１１、通信記録部２１２およびスナップショット取得部２１３は、取得シナリオが終了していなくても処理を終了させてもよい。
例えば、図７において、第３スナップショット組（ＳＮＡＰ（３））が取得された時点で、スナップショット取得工程が終了してもよい。つまり、主装置４２１を状態（６）に遷移させなくてもよい。
【００９６】
状態再現装置２００と代理応答装置３００との各要素は、１台の装置にまとめて実装されてもよいし、３台以上の装置によって分散して実装されてもよい。
主装置４２１および各副装置は、仮想計算機によって実現させずに、実計算機によって実現されてもよい。
副装置の台数が３台以上であってもよい。
【００９７】
実施の形態２．
代理応答通信を原因とするセッションＩＤ（ｉｄｅｎｔｉｆｉｅｒ）の不整合を防ぐ形態について、主に実施の形態１と異なる点を図９に基づいて説明する。
【００９８】
＊＊＊構成の説明＊＊＊
状態再現システム１００の構成は、実施の形態１における構成（図１から図４参照）と同じである。
【００９９】
＊＊＊動作の説明＊＊＊
状態再現方法の手順は、実施の形態１における手順（図５参照）と同じである。
【０１００】
スナップショット取得工程の手順は、実施の形態１における手順（図６参照）と同じである。
【０１０１】
図９に基づいて、状態再現工程の手順を説明する。
ステップＳ１２０からステップＳ１２８およびステップＳ１３０は、実施の形態１（図８参照）で説明した通りである。
【０１０２】
ステップＳ１２９’において、再現部２２１は、主装置４２１と各副装置とのセッションを切断する。
具体的には、再現部２２１は、切断命令を主装置４２１に送信する。主装置４２１は、切断命令を受信し、各副装置とのセッションを切断する。例えば、主装置４２１は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）におけるＦＩＮパケットを各副装置に送信する。
【０１０３】
その後、再現部２２１は、実施の形態１におけるステップＳ１２９（図８参照）と同じく、各副装置の動作を再開させる。
【０１０４】
＊＊＊実施の形態２の効果＊＊＊
実施の形態２では、代理応答通信によって主装置４２１の状態が再現された後、各副装置の動作が再開される前に、主装置４２１と各副装置とのセッションが切断される。
その結果、主装置４２１が各副装置と通信を行う場合、主装置４２１と各副装置との間で新たなセッションが確立される。
これにより、代理応答通信が行われた結果、主装置４２１と各副装置との間でセッションＩＤが整合しない状況になったとしても、セッションＩＤの不整合を解消することができる。
つまり、セッションＩＤの不整合を防ぐことができる。そして、主装置４２１の状態および各副装置の状態をより精密に再現することが可能となる。
【０１０５】
実施の形態３．
代理応答通信を原因とする通信シーケンス番号の不整合を防ぐ形態について、主に実施の形態１と異なる点を図１０に基づいて説明する。
通信シーケンス番号は、ＴＣＰにおけるセッションＩＤに相当する。
【０１０６】
＊＊＊構成の説明＊＊＊
状態再現システム１００の構成は、実施の形態１における構成（図１参照）と同じである。
状態再現装置２００の構成は、実施の形態１における構成（図２参照）と同じである。
対象動作装置４００の構成は、実施の形態１における構成（図４参照）と同じである。
【０１０７】
図１０に基づいて、代理応答装置３００の構成を説明する。
代理応答装置３００は、さらに、中継部３２２を備える。中継部３２２は、ソフトウェアによって実現される。
代理応答プログラムは、さらに、中継部３２２としてコンピュータを機能させる。
【０１０８】
＊＊＊動作の説明＊＊＊
状態再現方法の手順は、実施の形態１における手順（図５、図６および図８参照）と同じである。
【０１０９】
主装置４２１と各副装置とのそれぞれが再現状態組における状態で再現された後（または各副装置の動作が再開された後）に主装置４２１と各副装置との間で通信が発生した場合、中継部３２２は、以下のように動作する。
中継部３２２は、主装置４２１と各副装置との間で通信される各通信パケットに含まれるシーケンス番号を書き替えて各通信パケットを中継する。
【０１１０】
具体的には、中継部３２２は、主装置４２１から送信された通信パケットを受信し、受信した通信パケットに含まれるシーケンス番号を適切に書き替え、書き替え後の通信パケットを各副装置に送信する。つまり、中継部３２２は、各副装置からの前回の通信パケットに含まれるシーケンス番号に基づいて、シーケンス番号を決定する。そして、中継部３２２は、主装置４２１からの今回の通信パケットに含まれるシーケンス番号を、決定したシーケンス番号に書き換える。
また、中継部３２２は、各副装置から送信された通信パケットを受信し、受信した通信パケットに含まれるシーケンス番号を適切に書き替え、書き替え後の通信パケットを主装置４２１に送信する。つまり、中継部３２２は、主装置４２１からの前回の通信パケットに含まれるシーケンス番号に基づいて、シーケンス番号を決定する。そして、中継部３２２は、各副装置からの今回の通信パケットに含まれるシーケンス番号を、決定したシーケンス番号に書き換える。
その結果、中継部３２２を介して主装置４２１と各副装置との間で通信される複数の通信パケットにおいて、シーケンス番号が整合する。
【０１１１】
＊＊＊実施の形態３の効果＊＊＊
実施の形態３では、主装置４２１と各副装置とのそれぞれが再現状態組における状態で再現された後に主装置４２１と各副装置との間で通信が発生した場合、中継部３２２が、通信パケットに含まれるシーケンス番号を適切に書き替えながら、主装置４２１と各副装置との間で通信を中継する。
これにより、代理応答通信が行われた結果、主装置４２１と各副装置との間でシーケンス番号が整合しない状況になったとしても、シーケンス番号の不整合を解消することができる。
つまり、シーケンス番号の不整合を防ぐことができる。そして、主装置４２１の状態および各副装置の状態をより精密に再現することが可能となる。
【０１１２】
＊＊＊他の構成＊＊＊
実施の形態３は、実施の形態２と組わせて実施されてもよい。
つまり、実施の形態３において、代理応答通信によって主装置４２１が再現状態組における状態で再現された後、各副装置の動作が再開される前に、主装置４２１と各副装置とのセッションが切断されてもよい。
【０１１３】
実施の形態４．
セキュリティ検査システム１１０について、主に実施の形態１から実施の形態３と異なる点を図１１から図１３に基づいて説明する。
【０１１４】
＊＊＊構成の説明＊＊＊
図１１に基づいて、セキュリティ検査システム１１０の構成を説明する。
セキュリティ検査システム１１０は、状態再現装置２００と代理応答装置３００と対象動作装置４００とセキュリティ検査装置５００とを備える。
つまり、セキュリティ検査システム１１０は、状態再現システム１００の要素に加えてセキュリティ検査装置５００を備える。
【０１１５】
図１２に基づいて、セキュリティ検査装置５００の構成を説明する。
セキュリティ検査装置５００は、プロセッサ５０１とメモリ５０２と補助記憶装置５０３と通信装置５０４といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【０１１６】
プロセッサ５０１は、演算処理を行うＩＣであり、他のハードウェアを制御する。例えば、プロセッサ５０１は、ＣＰＵ、ＤＳＰ、またはＧＰＵである。
メモリ５０２は揮発性の記憶装置である。メモリ５０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ５０２はＲＡＭである。メモリ５０２に記憶されたデータは必要に応じて補助記憶装置５０３に保存される。
補助記憶装置５０３は不揮発性の記憶装置である。例えば、補助記憶装置５０３は、ＲＯＭ、ＨＤＤ、またはフラッシュメモリである。補助記憶装置５０３に記憶されたデータは必要に応じてメモリ５０２にロードされる。
通信装置５０４は通信を行う装置、すなわち、レシーバ及びトランスミッタである。例えば、通信装置５０４は通信チップまたはＮＩＣである。
【０１１７】
セキュリティ検査装置５００は、セキュリティ検査部５１０を備える。セキュリティ検査部５１０はソフトウェアで実現される。
【０１１８】
補助記憶装置５０３には、セキュリティ検査部５１０としてコンピュータを機能させるためのセキュリティ検査プログラムが記憶されている。セキュリティ検査プログラムは、メモリ５０２にロードされて、プロセッサ５０１によって実行される。
さらに、補助記憶装置５０３にはＯＳが記憶されている。ＯＳの少なくとも一部は、メモリ５０２にロードされて、プロセッサ５０１によって実行される。
つまり、プロセッサ５０１は、ＯＳを実行しながら、セキュリティ検査プログラムを実行する。
セキュリティ検査プログラムを実行して得られるデータは、メモリ５０２、補助記憶装置５０３、プロセッサ５０１内のレジスタまたはプロセッサ５０１内のキャッシュメモリといった記憶装置に記憶される。
【０１１９】
メモリ５０２はデータを記憶する記憶部５９１として機能する。但し、他の記憶装置が、メモリ５０２の代わりに、又は、メモリ５０２と共に、記憶部５９１として機能してもよい。
通信装置５０４はデータを通信する通信部５９２として機能する。セキュリティ検査装置５００によって送受信されるデータは通信部５９２を介して送受信される。
【０１２０】
セキュリティ検査装置５００は、プロセッサ５０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ５０１の役割を分担する。
【０１２１】
セキュリティ検査プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【０１２２】
＊＊＊動作の説明＊＊＊
セキュリティ検査システム１１０の動作はセキュリティ検査方法に相当する。また、セキュリティ検査方法の手順はセキュリティ検査プログラムの手順に相当する。
セキュリティ検査プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【０１２３】
図１３に基づいて、セキュリティ検査方法を説明する。
スナップショット取得工程および状態再現工程は、実施の形態１から実施の形態３で説明した通りである。
状態再現工程の後、ステップＳ１９０が実行される。
【０１２４】
ステップＳ１９０において、セキュリティ検査部５１０は、主装置４２１および各副装置に対するセキュリティ検査を行う。
具体的には、セキュリティ検査部５１０は、主装置４２１および各副装置に対するペネトレーションテストを行う。
ペネトレーションテストまたはペネトレーションテスト以外のセキュリティ検査を行う方法は、従来の方法と同じである。
【０１２５】
＊＊＊実施の形態４の効果＊＊＊
スナップショット取得工程および状態再現工程によって主装置４２１と各副装置とのそれぞれが再現状態組における状態で再現された後に、主装置４２１および各副装置に対するセキュリティ検査を行うことができる。つまり、再現状態組における主装置４２１および各副装置に対してセキュリティ検査を行うことができる。
【０１２６】
＊＊＊実施の形態の補足＊＊＊
図１４に基づいて、状態再現装置２００のハードウェア構成を説明する。
状態再現装置２００は処理回路９９２を備える。
処理回路９９２は、通信制御部２１１と通信記録部２１２とスナップショット取得部２１３と再現部２２１と記憶部２９１とを実現するハードウェアである。
処理回路９９２は、専用のハードウェアであってもよいし、メモリ２０２に格納されるプログラムを実行するプロセッサ２０１であってもよい。
【０１２７】
処理回路９９２が専用のハードウェアである場合、処理回路９９２は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
状態再現装置２００は、処理回路９９２を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９２の役割を分担する。
【０１２８】
状態再現装置２００において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【０１２９】
このように、処理回路９９２はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【０１３０】
図１５に基づいて、代理応答装置３００のハードウェア構成を説明する。
代理応答装置３００は処理回路９９３を備える。
処理回路９９３は、代理応答部３２１と中継部３２２と記憶部３９１とを実現するハードウェアである。
処理回路９９３は、専用のハードウェアであってもよいし、メモリ３０２に格納されるプログラムを実行するプロセッサ３０１であってもよい。
【０１３１】
処理回路９９３が専用のハードウェアである場合、処理回路９９３は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
代理応答装置３００は、処理回路９９３を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９３の役割を分担する。
【０１３２】
代理応答装置３００において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【０１３３】
このように、処理回路９９３はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【０１３４】
図１６に基づいて、対象動作装置４００のハードウェア構成を説明する。
対象動作装置４００は処理回路９９４を備える。
処理回路９９４は、第１仮想計算機４１１と第２仮想計算機４１２と第３仮想計算機４１３と記憶部４９１とを実現するハードウェアである。
処理回路９９４は、専用のハードウェアであってもよいし、メモリ４０２に格納されるプログラムを実行するプロセッサ４０１であってもよい。
【０１３５】
処理回路９９４が専用のハードウェアである場合、処理回路９９４は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
対象動作装置４００は、処理回路９９４を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９４の役割を分担する。
【０１３６】
対象動作装置４００において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【０１３７】
このように、処理回路９９４はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【０１３８】
図１７に基づいて、セキュリティ検査装置５００のハードウェア構成を説明する。
セキュリティ検査装置５００は処理回路９９５を備える。
処理回路９９５は、セキュリティ検査部５１０と記憶部５９１とを実現するハードウェアである。
処理回路９９５は、専用のハードウェアであってもよいし、メモリ５０２に格納されるプログラムを実行するプロセッサ５０１であってもよい。
【０１３９】
処理回路９９５が専用のハードウェアである場合、処理回路９９５は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
セキュリティ検査装置５００は、処理回路９９５を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９５の役割を分担する。
【０１４０】
セキュリティ検査装置５００において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【０１４１】
このように、処理回路９９５ハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【０１４２】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【０１４３】
１００  状態再現システム、１０１  通信路、１１０  セキュリティ検査システム、２００  状態再現装置、２０１  プロセッサ、２０２  メモリ、２０３  補助記憶装置、２０４  通信装置、２０５  入出力インタフェース、２１１  通信制御部、２１２  通信記録部、２１３  スナップショット取得部、２２１  再現部、２９１  記憶部、２９２  通信部、２９３  受付部、３００  代理応答装置、３０１  プロセッサ、３０２  メモリ、３０３  補助記憶装置、３０４  通信装置、３２１  代理応答部、３２２  中継部、３９１  記憶部、３９２  通信部、４００  対象動作装置、４０１  プロセッサ、４０２  メモリ、４０３  補助記憶装置、４０４  通信装置、４１１  第１仮想計算機、４１２  第２仮想計算機、４１３  第３仮想計算機、４２１  主装置、４２２  第１副装置、４２３  第２副装置、４９１  記憶部、４９２  通信部、５００  セキュリティ検査装置、５０１  プロセッサ、５０２  メモリ、５０３  補助記憶装置、５０４  通信装置、５１０  セキュリティ検査部、５９１  記憶部、５９２  通信部、９９２，９９３，９９４，９９５  処理回路。
【図１】
2019069462.tif 000003
【図２】
2019069462.tif 000004
【図３】
2019069462.tif 000005
【図４】
2019069462.tif 000006
【図５】
2019069462.tif 000007
【図６】
2019069462.tif 000008
【図７】
2019069462.tif 000009
【図８】
2019069462.tif 000010
【図９】
2019069462.tif 000011
【図１０】
2019069462.tif 000012
【図１１】
2019069462.tif 000013
【図１２】
2019069462.tif 000014
【図１３】
2019069462.tif 000015
【図１４】
2019069462.tif 000016
【図１５】
2019069462.tif 000017
【図１６】
2019069462.tif 000018
【図１７】
2019069462.tif 000019
【国際調査報告】
2019069462.tif 000020
2019069462.tif 000021