図1は、本実施形態に係るデータ生成装置の模式図である。
図2は、ファジングを説明するための模式図である。
図3は、本実施形態に係る制御部のブロック図である。
図4は、置換データが入力された場合のファジング用データの作成フローを説明する説明図である。
図5は、算出用データが入力された場合のファジング用データの作成フローを説明する説明図である。
図6は、モード入力画面の模式的な図を示す。
図7は、置換データ入力画面の模式的な図を示す。
図8は、算出用データ入力画面の模式的な図を示す。
図9は、設定値入力画面の模式的な図である。
図10は、データ総量予測値表示画面の模式的な図である。
図11は、時間予測値表示画面の模式的な図である。
図12は、置換データ入力画面の一例を示す図である。
図13は、ファジング用データ表示画面の一例を示す図である。
図14は、ファジング用データ表示画面の他の一例を示す図である。
図15は、判定結果表示画面の一例を示す図である。
以下に、本発明の実施形態を図面に基づいて詳細に説明する。なお、以下に説明する実施形態により本発明が限定されるものではない。
図1は、本実施形態に係るデータ生成装置の模式図である。図2は、ファジングを説明するための模式図である。本実施形態に係るデータ生成装置1は、所定のデータとしてのファジング用データを生成する装置である。ファジング用データとは、ファジングを行うために用いられるデータである。
(ファジングについて)
ファジングとは、テスト対象のソフトウェアのプログラムである対象プログラム102に、複数のテストデータを入力することで、その入力に対するプログラムの動作を確認して、プログラムの脆弱性を確認するテスト手法である。ファジングの説明のために、最小に作動用データAについて説明する。作動用データAは、ファジング用のテストデータではなく、対象プログラム102に正常な処理を行わせるための指令内容が含まれているデータである。作動用データAは、文字データ、数値データ、及びバイナリデータの少なくともいずれか1種からなるデータ群Bを有している。作動用データAは、複数のデータ群Bを有している場合があり、その場合、各データ群Bは、それぞれ異なる内容に関する指令内容の情報を含んでいる。
図2の例では、作動用データAは、データ群B1、B2、B2、B4を有している。データ群B1、B4は、複数の0又は1で構成されるデータ(バイナリデータ)を有するデータ群であり、バイナリデータを複数配列している。データ群B2は、0から9の数値で構成される複数のデータ(数値データ)を有するデータ群であり、数値データを複数配列している。データ群B3は、aからzの文字で構成されるデータ(文字データ)を有するデータ群であり、文字データを複数配列している。作動用データAにおいて、これらのデータ群B1、B2、B3、B4は、この順で配列している。ただし、図2の作動用データAの構成は一例であり、作動用データAは、文字データ、数値データ、及びバイナリデータの少なくともいずれか1種からなるデータ群Bを、少なくとも1つ有していればよい。
対象プログラム102は、作動用データAが入力されると、所定の処理を実行する。すなわち、対象プログラム102は、データ群B1からB4に含まれるデータから指令内容を読み出し、その指令内容に従った処理を実行する。
ファジングを実行する場合、作動用データAの少なくとも一部のデータ群Bを、ファジング用データFに置き換えて、テストデータTを生成する。すなわち、テストデータTは、作動用データAの少なくとも一部のデータ群Bをファジング用データFに置き換えたデータである。ファジングを実行する際には、このテストデータTを対象プログラム102に入力する。対象プログラム102は、このテストデータTから指令内容を読み出して、処理を実行する。そして、ファジングでは、このテストデータTによる対象プログラム102の動作を確認する。なお、この場合、内容が異なる複数のファジング用データFを設定し、ファジング用データF毎に複数のテストデータTを生成する。この複数のテストデータTを対象プログラム102に順次入力して、対象プログラム102の動作を確認する。これにより、様々なインプットに対する対象プログラム102の脆弱性などを確認することができる。なお、ファジング用データFは、異常なデータから構成されることが一般的である。異常なデータとは、対象プログラム102を正常に作動させる正常な作動用データAには含まれないようなデータを指す。
図2の例では、ファジング用データFとして、ファジング用データF1、F2、F3を生成している。そして、作動用データA中のデータ群B1をファジング用データF1に置き換えて、テストデータTとして、テストデータT1を生成している。また、作動用データA中のデータ群B2をファジング用データF2に置き換えて、テストデータT2を生成している。また、作動用データA中のデータ群B3をファジング用データF3に置き換えて、テストデータT2を生成している。なお、図2の例では、ファジング用データF1は、複数のバイナリデータで構成されるデータ群であり、ファジング用データF2は、複数の数値データで構成されるデータ群であり、ファジング用データF3は、複数の文字データで構成されるデータ群である。ただし、これは一例であり、ファジング用データFは、文字データ、数値データ、及びバイナリデータの少なくともいずれか1種からなるデータ群であればよい。また、図2の例では、ファジング用データFを、同じ種類のデータを有するデータ群に置き換えていた(例えば、バイナリデータを有するファジング用データF1を、バイナリデータを有するデータ群B1に置き換えていた)が、これに限られず異なる種類のデータ群に置き換えてもよい。
このように、ファジングは、最初に複数種類のファジング用データFを生成した後、作動用データAの少なくとも一部をファジング用データFに置き換えて、複数のテストデータTを生成し、それらのテストデータTを用いて実行される。ファジングのテスト精度の向上、すなわち脆弱性の発見精度の向上のためには、統計的に一様性のあるファジング用データFを用いることが望ましい。従って、ファジング用データFの算出のために、乱数関数を用いられる場合がある。すなわち、乱数関数を用いて複数の乱数を算出し、それらの乱数に基づきファジング用データFを算出する。乱数は、その周期などが予期し難いため、乱数により算出されたファジング用データは、統計的に一様性のあるデータとなる。
ここで、乱数関数は複数種類あり、低精度の乱数関数もあれば、高精度の乱数関数もある。低精度の乱数関数は、乱数(ファジング用データ)の算出に要する時間は短いが、算出された乱数(ファジング用データ)の予期され難さの度合いがそこまで高くないものである。また、高精度の乱数関数は、乱数(ファジング用データ)の算出に要する時間が長くなるが、算出された乱数(ファジング用データ)の予期され難さの度合いが高いものである。ファジングを行う対象プログラムは、様々な用途が考えられるため、ファジング用データは、予期され難い度合いが低くても早く計算を終わらせたい場合や、時間をかけても予期され難い度合いを高くしたい場合など、ユーザからの要求に応じた内容で生成されることが望ましい。そこで、本実施形態に係るデータ生成装置1は、複数の乱数関数を記憶しており、ユーザがどの乱数関数を用いるかを選択して、ファジング用データFを生成可能としている。従って、本実施形態に係るデータ生成装置1は、ユーザからの要求に応じた質を有するファジング用データを算出することが可能となる。また、ユーザが乱数関数を選択可能なので、算出したファジング用データFが、どのような質(予期され難さ、すなわち暗号学上の安全性)のデータであるかを、ユーザが確認することができる。以下、データ生成装置1について詳細に説明する。
(データ生成装置の構成)
図1は、データ生成装置1のハードウェアの構成を模式的に示している。データ生成装置1は、例えばコンピュータであり、図1に示すように、入力部10と、表示部12(出力部)と、制御部14と、記憶部16とを有する。入力部10は、ユーザからの情報が入力可能な装置であり、例えばマウス、キーボード、又はタッチパネル等である。表示部12は、制御部14の制御結果やユーザからの入力内容などを表示する装置であり、本実施形態では、ディスプレイやタッチパネルである。制御部14は、演算装置、すなわちCPU(Central Processing Unit)である。記憶部16は、制御部14の演算内容やプログラムの情報などを記憶するメモリであり、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などである。
記憶部16は、精度の異なる複数種類の乱数関数(疑似乱数関数)を記憶している。ここでの精度とは、暗号学上の安全性の度合いを意味しており、記憶部16は、算出される乱数(疑似乱数)の暗号学上の安全性の度合いが異なる、複数種類の乱数関数を記憶しているといえる。精度が高い乱数関数とは、安全性が高い(予期され難い)乱数を算出するものであり、精度が低い乱数関数とは、精度が高い乱数関数よりも安全性が低い(予期され易い)乱数を算出するものである。ただし、精度が低い乱数関数でも、一定程度の安全性は有している。例えば、本実施形態では、記憶部16は、乱数関数Y1、Y2、Y3を記憶している。乱数関数Y1は、一番精度が高い乱数関数であり、乱数関数Y3は、一番精度が低い乱数関数であり、乱数関数Y2は、乱数関数Y1と乱数関数Y3との間の精度を有する乱数関数である。乱数関数Y1を用いた場合、乱数の算出に要する時間が最も長く、乱数関数Y3を用いた場合、乱数の算出に要する時間が最も短い。乱数関数Y1、Y2、Y3としては、公知の乱数関数を用いることができる。例えば、乱数関数Y1としては、AES(Advanced Encryption Standard)で認定されている乱数関数を用いることができ、乱数関数Y2としては、Twofishを用いることができ、乱数関数Y3としては、RAND関数を用いることができるが、用いる乱数関数は任意に設定できる。また、記憶部16が記憶している乱数関数の数も、複数であれば任意である。
データ生成装置1は、制御部14が、記憶部16が記憶している乱数関数に基づき、対象機器100が記憶している対象プログラム102のためのファジング用データFを生成する。対象機器100は、例えばカーナビゲーションシステムなどの車載機器であるが、これに限られず、任意の機器であってよい。同様に、対象プログラム102も、車載機器用のプログラムに限られず、任意の内容のプログラムであってよい。
以下、制御部14の機能構成について説明する。図3は、本実施形態に係る制御部のブロック図である。図3に示すように、制御部14は、表示制御部20と、乱数関数読出部22と、入力データ取得部24と、予測値算出部26と、選択乱数関数取得部27と、データ算出部28と、テストデータ設定部30と、実行部32とを有する。表示制御部20と、乱数関数読出部22と、入力データ取得部24と、予測値算出部26と、選択乱数関数取得部27と、データ算出部28と、テストデータ設定部30と、実行部32とは、記憶部16に記憶されたソフトウェア(プログラム)である。
表示制御部20は、表示部12が表示する内容、すなわち画面を制御する。乱数関数読出部22は、記憶部16が記憶している乱数関数を読み出す。
入力データ取得部24は、入力部10に入力されたユーザからの各種入力データの内容を取得する。入力データ取得部24は、置換データ取得部40と、算出用データ取得部42と、設定値取得部44とを有する。置換データ取得部40は、ユーザから入力部10に入力された置換データの情報を取得する。算出用データ取得部42は、ユーザから入力部10に入力された算出用データ(データ種類情報及びデータ量情報)の情報を取得する。設定値取得部44は、ユーザから入力部10に入力された設定値(設定時間又は設定データ総量)の情報を取得する。これらの入力データ、すなわち、置換データ、算出用データ、設定値の内容については、後述する。
予測値算出部26は、入力データ取得部24が取得した入力データに基づき、乱数関数を用いてファジング用データFを算出した場合の予測値を算出する。予測値の算出については後述する。
選択乱数関数取得部27は、記憶部16が記憶する乱数関数のうち、ユーザから選択された乱数関数の情報を、入力部10への入力に基づき取得する。データ算出部28は、ユーザが設定した乱数関数を用いて、実際にファジング用データFを算出する。テストデータ設定部30は、作動用データAの少なくとも一部を、データ算出部28が算出したファジング用データFに置き換えて、テストデータTを算出する。実行部32は、テストデータ設定部30が算出したテストデータTを対象プログラム102に入力して、ファジングを実行する。
制御部14は、予測値算出部26により、乱数関数を用いてファジング用データFを算出した場合の予測値を算出する。ユーザは、この予測値に基づき、どの乱数関数を用いてファジング用データFを生成させるかを選択する。そして、制御部14は、データ算出部28により、ユーザに選択された乱数関数で、実際にファジング用データを算出する。このように、制御部14は、予測値により、ユーザに用いる乱数関数の選択基準を与え、その選択基準に基づくユーザの判断により、実際のファジング用データFを生成する。
制御部14は、ファジング用データFの作成フローが、ユーザから入力された入力データの種類によって異なる。具体的には、制御部14は、ユーザが入力部10に置換データを入力した場合と、ユーザが入力部10に算出用データを入力した場合とで、ファジング用データFの作成フローが異なる。置換データとは、作動用データAが有するデータ群Bのうち、ファジング用データFに置き換えるデータ群Bを指定する情報である。すなわち、図2のテストデータT1の場合、置換データとは、データ群B1である。一方、算出用データとは、ファジング用データFに置き換えるデータ群Bを指定するものではなく、データ量情報とデータ種類情報とを含むものである。データ量情報とは、ユーザによって指定された、算出予定の1つのファジング用データFのデータ量を示す情報である。また、データ種類情報とは、算出予定のファジング用データの種類、すなわちバイナリデータであるか数値データであるか文字データであるかを示す情報である。
従って、置換データが入力される場合とは、予め定められた作動用データAにおいて、その作動用データA内でファジング用データFに置き換える箇所を、ユーザが指定したケースである。一方、算出用データが入力される場合とは、例えばファジングを行うための作動用データAを予め定めず、算出予定のファジング用データFの量や種類を、ユーザが直接指定したケースである。以下、置換データが入力される場合の制御部14の処理を、置換データ時処理とし、算出用データが入力される場合の制御部14の処理を、算出用データ時処理とする。以下、それぞれの場合の制御部14の処理について説明する。
(置換データ時処理)
置換データ時処理について説明する。図4は、置換データが入力された場合のファジング用データの作成フローを説明する説明図である。図4に示すように、ユーザが置換データを入力部10に入力すると、制御部14は、置換データ取得部40により、ユーザが入力した置換データの情報を取得する(ステップS10)。上述のように、置換データとは、作動用データAが有するデータ群Bのうち、ファジング用データFに置き換えるデータ群Bを示している。この場合、記憶部16は、この作動用データAの情報を記憶している。表示制御部20は、ユーザが選択した作動用データAの情報を記憶部16から読出し、作動用データAが有するデータ群Bの情報を表示する。ユーザは、このデータ群Bの情報に基づき、ファジング用データFに置き換えるデータ群B、すなわち置換データを選択し、入力部10に入力する。置換データ取得部40は、この入力部10に入力された置換データの情報を取得する。
置換データの情報を取得した後、制御部14は、設定値取得部44により、ユーザから入力部10に入力された設定値の情報を取得する(ステップS12)。設定値とは、設定時間又は設定データ総量を指す。設定時間とは、ファジング用データFを算出する時間であって、ユーザが指定した値を指す。すなわち、ユーザは、入力部10に設定時間を入力した場合は、算出予定のファジング用データFを生成するための時間を指定することとなる。
一方、設定データ総量とは、算出予定のファジング用データFのデータ総量であって、ユーザが指定した値を指す。上述のように、ファジング用データFは、複数算出される場合がある。1つのファジング用データFとは、1つのテストデータTに用いられるファジング用データF(データ群)を指し、図2の例では、ファジング用データF1、F2、F3が、それぞれ1つのファジング用データである。設定データ総量とは、算出予定のファジング用データFのデータ総量であり、複数のファジング用データFのデータ総量を指定した値である。本実施形態において、ユーザは、算出予定のファジング用データFの個数を、設定データ総量として入力する。制御部14は、置換データを取得することで、1つのファジング用データFのデータ量を把握している。従って、設定値取得部44は、ファジング用データFの個数が指定されることにより、算出予定のファジング用データFのデータ総量を取得することができる。ただし、設定データ総量は、算出予定のファジング用データFの個数でなく、ファジング用データFの総データ量そのもの(何ギガバイトなど)として入力されてもよい。
設定値取得部44は、上記のような設定時間又は設定データ総量のいずれかを取得する。ユーザは、所定時間内で算出されるファジング用データFのデータ総量(個数)を、予測値として知りたい場合は、設定時間を入力する。一方、ユーザは、あるデータ総量(個数)のファジング用データFを算出する場合に要する時間を、予測値として知りたい場合は、設定データ総量(個数)を入力する。すなわち、設定値取得部44は、入力部10に設定時間が入力された場合に、入力された設定時間の情報を取得し、入力部10に設定データ総量が入力された場合に、入力された設定データ総量の情報を取得する。
設定値(設定時間又は設定データ総量)を取得した後、制御部14は、乱数関数読出部22により、記憶部16から乱数関数の関係情報を読み出し(ステップS14)、予測値算出部26により、乱数関数毎にファジング用データFの予測値を算出する(ステップS16)。関係情報とは、ある乱数関数を用いた場合に、ファジング用データFの算出に用いる時間と算出されるデータ量との相関関係を示す情報であり、言い換えれば、単位時間毎に算出可能なファジング用データFのデータ量を示す情報である。記憶部16は、この関係情報を、例えばテーブルとして、乱数関数毎に記憶している。乱数関数読出部22は、記憶部16が記憶している全ての乱数関数について、関係情報を読み出す。
予測値算出部26は、置換データと、設定値(設定時間又は設定データ総量)と、関係情報とに基づき、予測値を算出する。予測値とは、データ総量予測値、又は、時間予測値のいずれかである。予測値算出部26は、設定値として設定データ総量が取得されていた場合、関係情報に基づき、すなわち設定データ総量を関係情報に代入して、設定データ総量分のファジング用データFを算出した場合に要する時間の予測値を、時間予測値として算出する。
一方、予測値算出部26は、設定値として設定時間が取得されていた場合、関係情報に基づき、すなわち設定時間を関係情報に代入して、設定時間において算出可能なファジング用データFのデータ総量の予測値を、データ総量予測値として算出する。ここで、置換データは、1つのファジング用データFのデータの種類とデータ量とを示す情報である。従って、予測値算出部26は、算出可能なファジング用データFのデータ総量を、例えば1つのファジング用データFのデータ量で除することで、設定時間で算出可能なファジング用データFの個数の予測値を算出することができる。すなわち、予測値算出部26は、データ総量予測値として、設定時間で算出可能なファジング用データFの個数の予測値を算出する。ただし、予測値算出部26は、データ総量予測値として、設定時間で算出可能なファジング用データFのデータ総量そのもの(何ギガバイト)を、算出してもよい。
予測値算出部26は、この時間予測値又はデータ総量予測値を、記憶部16が記憶している乱数関数の全てについて算出する。ただし、予測値算出部26は、複数の乱数関数のうち少なくともいずれか1つの乱数関数について、時間予測値又はデータ総量予測値を算出してもよい。この場合、例えば、ユーザが予測値を知りたい乱数関数を指定し、乱数関数読出部22が、指定された乱数関数の関係情報を読み出すこととなる。
このように、予測値算出部26は、設定値取得部44が設定時間を取得した場合に、設定時間内で算出可能なファジング用データFのデータ総量予測値を算出する。一方、予測値算出部26は、設定値取得部44が設定データ総量を取得した場合に、設定データ総量分のファジング用データFの算出に要する時間予測値を算出する。表示制御部20は、予測値算出部26が算出したデータ総量予測値又は時間予測値を表示させる。これにより、ユーザは、ある乱数関数を用いた場合において、設定時間で算出可能なファジング用データFのデータ量、又は設定データ総量のファジング用データFの算出に要する時間を、実際の算出前に把握することができる。ユーザは、このデータ総量予測値又は時間予測値に基づき、用途に応じて、実際のファジング用データFの算出に用いる乱数関数を選択することができる。ユーザは、入力部10に、選択した乱数関数を指定する情報を入力する。
ユーザが乱数関数を指定する情報を入力したら、制御部14は、選択乱数関数取得部27により、入力部10に入力された乱数関数の情報を取得して、乱数関数読出部22により、ユーザが選択した乱数関数を読み出し(ステップS18)、データ算出部28により、指定された乱数関数を用いてファジング用データFを算出する(ステップS20)。データ算出部28は、指定された乱数関数で乱数を算出し、その乱数によりファジング用データFを算出する。
ここで、データ算出部28は、ファジング用データFの算出において、予測値の算出の際に用いられた置換データ及び設定値(設定時間又は設定データ総量)を用いる。すなわち、データ算出部28は、置換データ取得部40が取得済みの置換データに基づき、算出するファジング用データFのデータ種類(バイナリデータなど)と、算出するファジング用データFの単位データ量(1つのファジング用データFのデータ量)とを、設定する。そして、データ算出部28は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データFを、設定時間で算出する。又は、データ算出部28は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データFを、設定データ総量の分、すなわち設定データで指定された個数分だけ、算出する。
このように、データ算出部28は、予測値の算出において入力された置換データと設定値を用いて、ファジング用データFを算出する。ただし、実際にファジング用データFを算出する際に、ユーザは、新たな置換データと設定値とを、入力部10に入力してもよい。置換データ取得部40は、この新たに設定された置換データを取得し、データ算出部28は、この新たな置換データに基づき、算出するファジング用データFのデータ種類と単位データ量とを設定する。また、設定値取得部44は、新たに設定された設定値(設定時間又は設定データ総量)を取得する。データ算出部28は、この新たな設定値に基づき、ファジング用データFを算出する時間、又は算出するファジング用データFの総データ量(個数)を設定する。データ算出部28は、これらの設定により、指定された乱数関数を用いて、ファジング用データFを算出する。
ファジング用データFを算出した後、制御部14は、テストデータ設定部30により、テストデータTを設定する(ステップS22)。テストデータ設定部30は、記憶部16から、作動用データAを読み出す。テストデータ設定部30は、置換データに基づき、ファジング用データFにおいて置換するデータ群Bを検出し、検出したデータ群Bをファジング用データFに置換して、テストデータTを算出する。ファジング用データFが複数個算出されている場合は、テストデータ設定部30は、ファジング用データF毎に、テストデータTを算出して、置換されたファジング用データFが互いに異なる複数のテストデータTを算出する。
テストデータTを設定した後、制御部14は、設定したテストデータTを対象プログラム102に入力することで、ファジングを実行する(ステップS24)。制御部14は、ファジングを実行した後、対象プログラム102の動作を判定する(ステップS26)。これにより、置換データ時処理は終了する。制御部14は、ファジング用データFに置き換えられた対象プログラム102の動作内容に基づき、対象プログラム102の動作に問題があるか、問題がないか、又は判定が不可能であるかのいずれかの判定を行う。例えば、制御部14は、対象プログラム102が、ファジング用データFに置き換えられた場合に、フリーズしたり予期しない不適切な挙動を示したりする場合に、対象プログラム102の動作に問題があると判定する。また、制御部14は、対象プログラム102が、ファジング用データFに置き換えられた場合に、データが置き換えられているために動作実行命令を受け付けなかったり、予期している挙動を示したりする場合などに、対象プログラム102の動作に問題がないと判定する。また、制御部14は、対象プログラム102が、ファジング用データFに置き換えられた場合に、予期しない挙動であるが問題があると判定するまでには至らない場合などに、判定が不可能であるとする。この制御部14の判定基準は、予め設定可能である。
このように、置換データ時処理においては、記憶部16が作動用データAの情報を記憶しているため、データ生成装置1は、作動用データA中のどのデータ群Bをファジング用データFに置き換えるかを、置換データとしてユーザに指定させることができる。この場合、ユーザは、データ群Bのデータ種類やデータ量を把握していない場合でも、作動用データAのどの位置におけるデータ群B、すなわちどのような指令内容を有するデータ群Bを、ファジング用データFに置き換えるかを指定するだけで、データ生成装置1にファジング用データFを作成させることができる。また、この場合、記憶部16が作動用データAの情報を記憶しているため、データ生成装置1は、ファジング用データFの算出に加え、テストデータTも設定することができ、さらに、ファジングも実施することができる。ただし、データ生成装置1は、ファジング用データFを算出するものであれば、必ずしもテストデータTの設定及びファジングの実行を行わなくてもよい。
また、置換データ時処理においては、記憶部16が作動用データAの情報を記憶しているため、予測値算出部26は、テストデータTを設定する時間とファジングを実施する時間とについても、予測可能である。従って、予測値算出部26は、ファジング用データFを算出するだけの時間に限られず、ファジング用データFを算出する時間とテストデータTを設定する時間とを合算した時間を、時間予測値として算出してもよい。また、予測値算出部26は、ファジング用データFを算出する時間とテストデータTを設定する時間とファジングを実施する時間とを合算した時間を、時間予測値として算出してもよい。
(算出用データ時処理)
次に、算出用データ時処理について説明する。図5は、算出用データが入力された場合のファジング用データの作成フローを説明する説明図である。図5に示すように、ユーザが算出用データを入力部10に入力すると、制御部14は、算出用データ取得部42により、ユーザが入力した算出用データの情報を取得する(ステップS30)。上述のように、算出用データとは、ユーザによって入力されたデータ量情報とデータ種類情報とを含むものである。データ量情報とは、算出予定のファジング用データFの単位当たりのデータ量、すなわち1つのファジング用データFのデータ量を示す情報である。また、データ種類情報とは、算出予定のファジング用データの種類(バイナリデータなど)を示す情報である。ここでのデータ種類情報は、データの位置と種類とを含む情報であってもよい。すなわち、ファジング用データFにおいて、どの位置におけるデータが、どのような種類のデータであるかを指定する情報であってもよい。
このように、算出用データ時処理においては、ユーザが、データ量情報とデータ種類情報との両方を、入力部10に入力する。算出用データ取得部42は、入力部10に入力されたデータ量情報とデータ種類情報とを取得する。
データ量情報とデータ種類情報とを取得した後、制御部14は、設定値取得部44により設定値の情報を取得し(ステップS32)、乱数関数読出部22により、記憶部16から乱数関数の関係情報を読み出す(ステップS34)。このステップS32は、置換データ時処理における図4のステップS12と同じ処理であり、ステップS34は、置換データ時処理における図4のステップS14と同じ処理であるため、説明を省略する。
関係情報を読み出した後、制御部14は、乱数関数毎に予測値を算出する(ステップS36)。予測値算出部26は、算出用データ(データ量情報及びデータ種類情報)と、設定値(設定時間又は設定データ総量)と、関係情報とに基づき、予測値を算出する。算出用データ時処理における予測値算出部26の予測値の算出処理は、置換データの代わりに算出用データを用いている点で、置換データ時処理における予測値の算出処理と異なるが、それ以外の点では同じ処理となる。
具体的には、算出用データ時処理において、予測値算出部26は、ユーザによって指定されたデータ量情報から、算出予定のファジング用データFの単位データ量、すなわち1つのファジング用データFのデータ量を設定する。そして、予測値算出部26は、ユーザによって指定されたデータ種類情報から、算出予定のファジング用データFのデータの種類(バイナリデータなど)を設定する。また、予測値算出部26は、データ量情報及びデータ種類情報から、算出予定のファジング用データFにおいて、どの位置にどの種類のデータが設定されるかを設定する。
そして、予測値算出部26は、設定値として設定データ総量が取得されていた場合、関係情報に基づき、データ量情報及びデータ種類情報で指定されたファジング用データFを、設定データ総量分だけ算出した場合に要する時間の予測値を、時間予測値として算出する。なお、設定データ総量は、算出予定のファジング用データFの個数として設定されており、予測値算出部26は、ユーザによって指定された単位当たりのファジング用データFのデータ量を取得している。従って、予測値算出部26は、設定データ総量から、算出予定のファジング用データFの総量を把握して、その総量を関係情報に代入して、時間予測値を算出することができる。なお、設定データ総量は、置換データ時処理と同様に、算出予定のファジング用データFの個数でなく、ファジング用データFの総データ量そのもの(何ギガバイトなど)として入力されてもよい。
一方、予測値算出部26は、設定値として設定時間が取得されていた場合、関係情報に基づき、設定時間において算出可能なファジング用データFのデータ総量の予測値を、データ総量予測値として算出する。予測値算出部26は、例えば、算出可能なファジング用データFのデータ総量を、データ量情報及びデータ種類情報で指定されたファジング用データFの単位データ量で除することで、設定時間で算出可能なファジング用データFの個数の予測値を算出することができる。すなわち、予測値算出部26は、データ総量予測値として、設定時間で算出可能なファジング用データFの個数の予測値を算出する。ただし、予測値算出部26は、データ総量予測値として、設定時間で算出可能なファジング用データFのデータ総量そのものを、算出してもよい。
このように、予測値算出部26は、算出用データ時処理においても、ファジング用データFのデータ総量予測値、又は、ファジング用データFの算出に要する時間予測値を算出する。これにより、ユーザは、ある乱数関数を用いた場合において、設定時間で算出可能なファジング用データFのデータ総量、又は設定データ総量のファジング用データFの算出に要する時間を、実際の算出前に把握することができる。ユーザは、このデータ総量予測値又は時間予測値に基づき、用途に応じて、実際のファジング用データFの算出に用いる乱数関数を選択することができる。そして、ユーザは、入力部10に、選択した乱数関数を指定する情報を入力する。
ユーザが乱数関数を指定する情報を入力したら、制御部14は、選択乱数関数取得部27により、ユーザが選択して入力部10に入力された乱数関数の情報を取得して、乱数関数読出部22により、ユーザが指定した乱数関数を読み出し(ステップS38)、データ算出部28により、指定された乱数関数を用いてファジング用データFを算出する(ステップS40)。データ算出部28は、指定された乱数関数で乱数を算出し、その乱数によりファジング用データFを算出する。
ここで、データ算出部28は、ファジング用データFの算出において、予測値の算出の際に用いられた算出用データ(データ量情報及びデータ種類情報)と、設定値(設定時間又は設定データ総量)とを用いる。すなわち、データ算出部28は、算出用データ取得部42が取得済みのデータ量情報及びデータ種類情報に基づき、算出するファジング用データFのデータ種類(バイナリデータなど)と、算出するファジング用データFの単位データ量とを、設定する。そして、データ算出部28は、設定値取得部44が設定時間を取得している場合は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データFを、設定時間の間で算出する。また、データ算出部28は、設定値取得部44が設定データ総量を取得している場合は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データFを、設定データ総量の分、すなわち設定データで指定された個数分だけ、算出する。
算出用データ時処理は、ステップS40のファジング用データFの算出で終了する。算出用データ時処理ただし、算出用データ時処理においても、記憶部16が作動用データAを記憶していれば、置換データ時処理と同様に、テストデータTを設定し、ファジングを実行してもよい。この場合、例えば、ユーザが作動用データA内のどのデータ群Bを、ファジング用データFに置換するか指定する。
このように、算出用データ時処理においては、ユーザがファジング用データFのデータ種類と単位データ量とを指定する。データ生成装置1は、このユーザの指定に基づいて生成されるファジング用データFの予測値を算出し、ユーザの指定に基づいて、ファジング用データFを算出する。従って、算出用データ時処理の場合、データ生成装置1は、ユーザの指定に応じた汎用性の高いファジング用データFを生成することができる。また、データ生成装置1は、記憶部16が作動用データAを記憶していなくても、ユーザの要求に応じたファジング用データFを生成することができる。
本実施形態では、入力データ取得部24が、置換データ及び算出用データの両方を取得可能になっている。従って、データ生成装置1は、ユーザに、置換データ時処理と算出用データ時処理のいずれを実行するかを選択させることができる。ただし、データ生成装置1は、入力データ取得部24が、置換データ及び算出用データのいずれかを取得可能であってよく、置換データ時処理と算出用データ時処理とのいずれのみを実行可能であってもよい。
また、本実施形態では、設定値取得部44が、設定時間及び設定データ総量の両方を取得可能になっている。そして、予測値算出部26は、設定値取得部44が設定時間を取得した場合に、設定時間内で算出可能なファジング用データFのデータ総量予測値を算出し、設定値取得部44が設定データ総量を取得した場合に、設定データ総量分のファジング用データFの算出に要する時間予測値を算出する。従って、データ生成装置1は、ユーザに、データ総量予測値か時間予測値のいずれを算出させるかを選択することができ、また、データ総量予測値か時間予測値の両方を算出させることもできる。従って、データ生成装置1は、ユーザが時間を優先するか質(予期され難さ)を優先するかなどの、優先順位に応じた予測値を算出することができる。ただし、データ生成装置1は、設定値取得部44が、設定時間及び設定データ総量のいずれかを取得可能であってよく、予測値算出部26が、データ総量予測値及び時間予測値のいずれかを算出可能であってよい。
以上説明したように、本実施形態に係るデータ生成装置1は、記憶部16と、入力データ取得部24と、予測値算出部26と、選択乱数関数取得部27と、データ算出部28とを有する。記憶部16は、複数種類の乱数関数を記憶する。入力データ取得部24は、設定時間及び設定データ総量の少なくともいずれかを、ユーザの入力により取得する。設定時間は、所定のデータ(本実施形態ではファジング用データF)を生成する時間の設定値である。設定データ総量は、生成する所定のデータ(本実施形態ではファジング用データF)のデータ総量の設定値である。予測値算出部26は、データ総量予測値及び時間予測値の、少なくともいずれかを算出する。データ総量予測値は、乱数関数を用いて設定時間で生成可能な、所定のデータ(本実施形態ではファジング用データF)のデータ総量の予測値である。時間予測値は、乱数関数を用いて設定データ総量分の所定のデータ(本実施形態ではファジング用データF)を生成した場合に要する時間の予測値である。選択乱数関数取得部27は、複数種類の乱数関数のうちユーザが選択した乱数関数の情報を取得する。データ算出部28は、ユーザに選択された乱数関数を用いて、所定のデータ(本実施形態ではファジング用データF)を生成する。
このデータ生成装置1は、複数の乱数関数を記憶している。そして、データ生成装置1は、実際にファジング用データFを算出する前に、この乱数関数を用いてファジング用データFを算出した場合に要する時間予測値、又は、ファジング用データFのデータ総量(個数など)の予測値を算出する。従って、ユーザは、この予測値を参考にして、複数の乱数関数のうち、どの乱数関数を用いてファジング用データFを算出するかを決定することができる。データ生成装置1は、ユーザが選択した乱数関数を用いてファジング用データFを算出する。従って、このデータ生成装置1によると、ユーザが、用途に応じて算出するファジング用データの質(予期され難さ)を、選択可能とすることができる。また、このデータ生成装置1によると、算出されたファジング用データの質を、認識することが可能になる。なお、本実施形態では、データ生成装置1は、所定のデータとしてファジング用データFを生成している。しかし、データ生成装置1が生成する所定のデータは、ファジング用データFに限られない。データ生成装置1が生成する所定のデータは、乱数関数を用いて算出されるデータであれば任意である。すなわち、データ生成装置1によると、ユーザが、用途に応じて算出するデータの質(予期され難さ)を、選択可能とすることができるといえる。
また、予測値算出部26は、入力データ取得部24が設定時間を取得した場合に、データ総量予測値を算出し、入力データ取得部24が設定データ総量を取得した場合に、時間予測値を算出する。このデータ生成装置1は、ユーザの入力に応じて、データ総量予測値及び時間予測値を算出する。このデータ生成装置1によると、ユーザが、ファジング用データFの算出時間や、算出される総量の予測値に基づき、乱数関数を選択可能とすることができる。従って、このデータ生成装置1によると、ユーザが、算出するファジング用データの質を、より好適に選択可能とすることができる。
また、記憶部16は、ファジングを行う対象プログラムを正常に作動させるための作動用データの情報を記憶している。そして、入力データ取得部24は、置換データの情報を、ユーザの入力により取得する。置換データは、作動用データAに含まれるデータ群Bのうち、ファジング用データFに置き換えるデータである。予測値算出部26は、置換データの情報にも基づき、データ総量予測値及び時間予測値の少なくともいずれかを算出する。このデータ生成装置1によると、ユーザが、作動用データA中のデータ群Bのデータ種類やデータ量を把握していない場合でも、作動用データAのどの位置におけるデータ群Bをファジング用データFに置き換えるかを指定するだけで、ファジング用データFを作成させることができる。従って、このデータ生成装置1によると、ユーザが要求する質に応じて、ファジング用データFを容易に作成することができる。
また、入力データ取得部24は、算出するファジング用データFの算出用データを、ユーザの入力により取得する。算出用データは、データ種類情報とデータ量情報とを含む。データ種類情報は、算出するファジング用データFがバイナリデータであるか数値データであるか文字データであるかを示す情報である。また、データ量情報は、1つのテストデータT用のファジング用データFのデータ量(単位データ量)である。予測値算出部26は、データ種類情報とデータ量情報とにも基づき、データ総量予測値及び時間予測値の少なくともいずれかを算出する。このデータ生成装置1によると、ユーザの指定に応じた汎用性の高いファジング用データFを生成することができる。
(表示画面について)
以下、表示部12が表示する画面について説明する。表示部12は、表示制御部20の制御により、モード入力画面50と、置換データ入力画面52と、算出用データ入力画面54と、設定値入力画面56と、予測値表示画面58とを表示する。以下、各画面について説明する。
図6は、モード入力画面の模式的な図を示す。表示制御部20は、ファジング用データFを作成する場合、最初に、表示部12に、モード入力画面50を表示させる。図6に示すように、モード入力画面50は、置換データ入力部50Aと、算出用データ入力部50Bとを、並んで表示させる。置換データ入力部50Aは、置換データ時処理を始めるための表示である。表示制御部20は、ユーザによる置換データ入力部50Aの入力(選択)を検出すると、表示部12の表示を、モード入力画面50から、置換データ入力画面52に切り替える。また、算出用データ入力部50Bは、算出用データ時処理を始めるための表示である。表示制御部20は、ユーザによる算出用データ入力部50Bの入力(選択)を検出すると、表示部12の表示を、モード入力画面50から、算出用データ入力画面54に切り替える。すなわち、表示制御部20は、ユーザの入力に基づき、表示部12の表示を、モード入力画面50から、置換データ入力画面52と算出用データ入力画面54とのいずれかに切り替える。
なお、置換データ入力部50A及び算出用データ入力部50Bへのユーザの入力は、ユーザによる入力部10への操作によって行われる。例えば、ユーザは、入力部10としてのマウスの画面上のポインタを、置換データ入力部50A又は算出用データ入力部50Bに位置させた状態で、クリック操作を行うことで、置換データ入力部50A又は算出用データ入力部50Bを選択する。また、入力部10がタッチパネルの場合は、例えば、ユーザは、指などを置換データ入力部50A又は算出用データ入力部50Bに押圧することで、置換データ入力部50A又は算出用データ入力部50Bを選択する。以降のユーザの入力も、同様にして行われる。
図7は、置換データ入力画面の模式的な図を示す。置換データ入力画面52は、置換データの情報をユーザが入力するための画面である。図7に示すように、置換データ入力画面52は、置換データ設定入力部52Aを表示させる。置換データ設定入力部52Aは、ユーザが置換データを入力するための表示である。置換データ設定入力部52Aは、例えば、作動用データAが有する複数のデータ群Bを、一覧表示する。ユーザは、置換データ設定入力部52Aが表示する複数のデータ群Bから、置換データに置き換えるデータ群Bを入力(選択)する。これにより、置換データが入力される。置換データ取得部40は、置換データ入力画面52においてユーザが選択したデータ群Bを、置換データとして取得する。表示制御部20は、置換データ入力画面52が表示されている状態で置換データが入力された場合に、表示部12の表示を、置換データ入力画面52から設定値入力画面56に切り替える。
図8は、算出用データ入力画面の模式的な図を示す。算出用データ入力画面54は、算出用データ、すなわち、データ種類情報とデータ量情報とを、ユーザが入力するための画面である。図8に示すように、算出用データ入力画面54は、データ種類情報入力部54Aと、データ量情報入力部54Bとを表示させる。データ種類情報入力部54Aは、ユーザがデータ種類情報を入力するための表示である。データ種類情報入力部54Aは、算出予定のファジング用データFにおける、バイナリデータ、数値データ、文字データそれぞれの数(又はデータ量)が、入力可能となっている。また、データ種類情報入力部54Aは、バイナリデータ、数値データ、文字データそれぞれのファジング用データFにおける位置(順番)も、入力可能となっている。ユーザは、データ種類情報入力部54Aを選択した状態で、バイナリデータ、数値データ、文字データそれぞれの数(又はデータ量)と、それらの位置を入力する。これにより、データ種類情報が入力される。算出用データ取得部42は、算出用データ入力画面54で入力されたデータ種類情報を取得する。
また、データ量情報入力部54Bは、ユーザがデータ量情報を入力するための表示である。データ量情報入力部54Bは、算出予定のファジング用データFの単位データ量の情報、すなわちデータ量情報が、入力可能となっている。データ量情報入力部54Bは、データ種類情報で入力されたデータの種類毎に、データ量を入力可能となっている。ユーザは、例えばデータ種類情報を入力した後に、データ量情報入力部54Bを選択した状態で、ファジング用データFの単位データ量、より詳しくは、データの種類毎のデータ量を、入力する。これにより、データ量情報が入力される。算出用データ取得部42は、算出用データ入力画面54で入力されたデータ量情報を取得する。
表示制御部20は、算出用データ入力画面54が表示されている状態でデータ種類情報及びデータ量情報が入力された場合に、表示部12の表示を、算出用データ入力画面54から設定値入力画面56に切り替える。
なお、表示部12は、置換データ入力画面52と、算出用データ入力画面54とを、別々の画面で表示しているが、1画面で表示してもよい。この場合、例えば、モード入力画面50を設けず、1画面に、置換データ設定入力部52Aと、データ種類情報入力部54A及びデータ量情報入力部54Bとを表示する。そして、ユーザによる置換データ設定入力部52Aへの入力、又は、データ種類情報入力部54A及びデータ量情報入力部54Bへの入力により、上記と同様の処理を行う。
図9は、設定値入力画面の模式的な図である。設定値入力画面56は、設定時間及び設定データ総量の少なくともいずれかを、ユーザが入力するための画面である。図9に示すように、設定値入力画面56は、設定時間入力部56Aと、設定データ総量入力部56Bと、予測値算出指示部56Cとを、並んで表示する。設定時間入力部56Aは、ユーザが設定時間を入力するための表示であり、データ総量予測値を算出するための設定時間を入力可能となっている。また、設定データ総量入力部56Bは、ユーザが設定データ総量を入力するための表示であり、時間予測値を算出するための設定データ総量を入力可能となっている。本実施形態では、ユーザが、設定時間入力部56Aと、設定データ総量入力部56Bとのいずれかを選択可能となっている。ユーザが設定時間入力部56Aと、設定データ総量入力部56Bとのいずれかを選択すると、選択されなかった方の表示の色が暗くなり、選択できない状態となる。ただし、選択を解除すると、選択できない状態も解除される。図9の例では、設定時間入力部56Aを選択した状態を例示している。
そして、ユーザは、設定時間入力部56Aを選択した状態で、設定時間を入力する。これにより、設定時間が入力され、設定値取得部44が、設定時間の情報を取得する。また、ユーザは、設定データ総量入力部56Bを選択した状態で、設定データ総量を入力する。これにより、設定データ総量が入力され、設定値取得部44が、設定データ総量の情報を取得する。
予測値算出指示部56Cは、ユーザが予測値(時間予測値又はデータ総量予測値)の算出を指示するための表示である。予測値算出指示部56Cは、設定時間又は設定データ総量が入力される前は、例えば表示の色が暗くなっており、入力できない状態となっている。予測値算出指示部56Cは、設定時間又は設定データ総量が入力されると、例えば表示の色が明るくなり、ユーザによる入力が可能な状態となる。設定時間又は設定データ総量が入力された状態で、ユーザが予測値算出指示部56Cを入力すると、予測値算出部26が、予測値の算出を開始する。ただし、予測値算出指示部56Cは必ずしも設けられていなくてもよい。この場合、設定値入力画面56において設定時間又は設定データ総量が入力されると、予測値算出部26は、予測値の算出を開始する。
なお、設定値入力画面56は、設定時間入力部56Aと、設定データ総量入力部56Bとを、一画面で表示しているが、これらを表示する画面を切り替えて表示してもよい。この場合、例えば、設定時間を入力するか設定データ総量を入力するかをユーザに選択させる画面を設け、ユーザの選択により、設定時間入力部56Aを表示する画面、又は、設定データ総量入力部56Bを表示する画面のいずれかを表示させる。
予測値算出部26が予測値の算出を終了すると、表示制御部20は、表示部12に予測値表示画面58を表示させる。すなわち、表示制御部20は、予測値算出部26がデータ総量予測値及び時間予測値の少なくともいずれかを算出すると、予測値表示画面58を表示させる。予測値表示画面58は、データ総量予測値及び時間予測値の少なくともいずれかを、複数の乱数関数毎に表示する。予測値表示画面58は、データ総量予測値表示画面58Aと、時間予測値表示画面58Bとの、いずれかである。
図10は、データ総量予測値表示画面の模式的な図である。表示制御部20は、予測値算出部26がデータ総量予測値を算出した場合に、データ総量予測値表示画面58Aを表示させる。データ総量予測値表示画面58Aは、データ総量予測値を表示するための画面である。データ総量予測値表示画面58Aは、乱数関数ごとに、データ総量予測値を表示する。より詳しくは、データ総量予測値表示画面58Aは、乱数関数ごとに算出されたデータ総量予測値の全てを、一覧表示する。図10の例では、データ総量予測値表示画面58Aは、データ総量予測値表示部58A1、58A2、58A3を並んで表示する。データ総量予測値表示部58A1は、設定時間S1において乱数関数Y1を用いた場合のデータ総量予測値を表示し、データ総量予測値表示部58A2は、設定時間S1において乱数関数Y2を用いた場合のデータ総量予測値を表示し、データ総量予測値表示部58A3は、設定時間S1において乱数関数Y3を用いた場合のデータ総量予測値を表示している。
図11は、時間予測値表示画面の模式的な図である。表示制御部20は、予測値算出部26が時間予測値を算出した場合に、時間予測値表示画面58Bを表示させる。時間予測値表示画面58Bは、時間予測値を表示するための画面である。時間予測値表示画面58Bは、乱数関数ごとに、時間予測値を表示する。より詳しくは、時間予測値表示画面58Bは、乱数関数ごとに算出された時間予測値の全てを、一覧表示する。図11の例では、時間予測値表示画面58Bは、時間予測値表示部58B1、58B2、58B3を並んで表示する。時間予測値表示部58B1は、設定データ総量S2において乱数関数Y1を用いた場合の時間予測値を表示し、時間予測値表示部58B2は、設定データ総量S2において乱数関数Y2を用いた場合の時間予測値を表示し、時間予測値表示部58B3は、設定データ総量S2において乱数関数Y3を用いた場合の時間予測値を表示している。
以降で、置換データを入力する場合の画面表示の具体的な一例を説明する。図12は、置換データ入力画面の一例を示す図である。この例において、表示制御部20は、図6に示す置換データ入力部50Aが選択された場合、図12に示す置換データ入力画面52aに表示を切り替える。置換データ入力画面52aは、図7に示す置換データ入力画面52の他の一例である。図12に示すように、置換データ入力画面52aは、置換データ設定入力部52Aaを表示させる。置換データ設定入力部52Aaは、ユーザが置換データを入力するための表示である。置換データ設定入力部52Aaには、作動用データAのプログラムコードが表示されている。図12の例では、作動用データAのプログラムコードは、「Get/index.html」と、「Host Setting/192.168.11.1」とを含んでいる。ここで、「Get」と「Host Setting」はどのような処理を実行するかの命令を示すコマンドであり、「index.html」と「192.168.11.1」とが、コマンドで指定される情報である。本実施形態では、ファジング用データFに置換されるデータ群Bとして、コマンドで指定される情報である「index.html」と「192.168.11.1」とが選択可能となっている。置換データ設定入力部52Aaには、置換データ設定入力部53が含まれている。置換データ設定入力部53は、置換データ設定入力部52Aaに表示されているプログラムコードのうち、ファジング用データFに置換されるデータ群Bを選択するための表示である。図12の例では、置換データ設定入力部53は、データ群Bとして「index.html」を選択するための置換データ設定入力部53aと、データ群Bとして「192.168.11.1」を選択するための置換データ設定入力部53bとを有している。なお、ファジング用データFに置換されるデータ群Bとして、「Get」や「Host Setting」などの、コマンドも含まれてよい。
ユーザは、置換データ入力画面52aにおいて、置換データ設定入力部53を選択することで、作動用データAのプログラムコードから、ファジング用データFに置換されるデータ群Bを選択する。すなわち、置換データ設定入力部53aが選択された場合、データ群Bとして、「index.html」を、ファジング用データFに置換されるデータ群Bとして選択する。また、すなわち、置換データ設定入力部53bが選択された場合、データ群Bとして、「192.168.11.1」を、ファジング用データFに置換されるデータ群Bとして選択する。また、それぞれの置換データ設定入力部53a、53bを選択することで、複数のデータ群Bを、ファジング用データFに置換されるデータ群Bとして選択することもできる。このように、置換データ入力画面52aは、作動用データAが表示され、作動用データAの一部(ここではデータ群B)を選択することで、置換データの情報をユーザが入力する画面であるといえる。
表示制御部20は、置換データ設定入力部53の入力により置換データが選択された場合に、表示部12の表示を、置換データ入力画面52aから、図9に示す設定値入力画面56に切り替える。ユーザは、設定値入力画面56に入力を行うことで、算出部26に、ファジング用データFの予測値(データ総量予測値又は時間予測値)を算出させる。表示制御部20は、設定値入力画面56へのユーザの入力により、算出部26による計算が実行されたら、図10に示すデータ総量予測値表示画面58A、又は図11に示す時間予測値表示画面58Bを表示させる。ユーザは、データ総量予測値表示画面58A又は時間予測値表示画面58Bに表示された情報を参照して、乱数関数を指定する。制御部14は、その乱数関数に基づき、データ算出部28により、ファジング用データFを算出する。
図13は、ファジング用データ表示画面の一例を示す図である。表示制御部20は、ファジング用データFが算出されたら、図13に示すファジング用データ表示画面60aを、表示部12に表示させる。ファジング用データ表示画面60aは、算出したファジング用データFを表示する画面である。ファジング用データ表示画面60aは、置換データ表示部61と、ファジング用データ表示部64とを表示する。コード表示部61は、作動用データAのプログラムコードを表示する画像であり、置換データ選択部62を有している。置換データ選択部62は、ファジング用データFに置換されたデータ群Bを選択するための表示である。ファジング用データ表示部64は、置換データ選択部62とは異なる位置に表示される画像であり、データ群B毎に、算出されたファジング用データFの一覧を表示する画像である。
ファジング用データ表示画面60aにおいて、置換データ選択部62からデータ群Bが選択されたら、表示制御部20は、選択されたデータ群Bに対して算出されたファジング用データFを、ファジング用データ表示部64に表示させる。すなわち、図13の例では、置換データ選択部62のうちから、データ群Bとして「index.html」を選択するための置換データ選択部62aが選択されたら、表示制御部20は、ファジング用データ表示部64に、「index.html」というデータ群Bについて算出されたファジング用データFを表示させる。一方、置換データ選択部62のうちから、データ群Bとして「192.168.11.1」を選択するための置換データ選択部62bが選択されたら、表示制御部20は、ファジング用データ表示部64に、「192.168.11.1」というデータ群Bについて算出されたファジング用データFを表示させる。なお、表示制御部20は、置換データ選択部62が選択される毎にファジング用データFの表示を切り替えることに限られず、全ての置換用データBに対するファジング用データFを、ファジング用データ表示部64に表示させてもよい。
図14は、ファジング用データ表示画面の他の一例を示す図である。図14に示すファジング用データ表示画面60bは、ファジング用データ表示画面60aの他の例である。図14に示すように、表示制御部20は、置換データ選択部62が選択されたら、ファジング用データ表示部64を、置換データ選択部62の下にポップアップ表示させてもよい。すなわち、図14の例では、表示制御部20は、置換データ選択部62aが選択されたら、置換データ選択部62aの下に、ファジング用データ表示部64aを表示させる。ファジング用データ表示部64aは、「index.html」についてのファジング用データを表示する画像である。表示制御部20は、置換データ選択部62bが選択されたら、置換データ選択部62bの下に、ファジング用データ表示部64bを表示させる。ファジング用データ表示部64bは、「index.html」についてのファジング用データを表示する画像である。このように、表示制御部20は、選択されていない置換データBのファジング用データ表示部64の表示を行わず、選択された置換データBのファジング用データ表示部64の表示のみを行う。すなわち、表示制御部20は、一度置換データBが選択され、次に他の置換データBが選択された場合に、前に選択されたファジング用データ表示部64から、次に選択されたファジング用データ表示部64に、表示を切り替える。ただし、表示制御部20は、前に選択されたファジング用データ表示部64を表示させたまま、次に選択されたファジング用データ表示部64を表示してもよい。すなわち、ファジング用データ表示画面は、置換データとして選択されたデータ群B毎に、算出したファジング用データFを表示するものであればよい。このように、表示部12は、ファジング用データ表示画面60a(ファジング用表示画面)を表示するものであり、ファジング用データ表示画面60aは、作動用データAを表示するとともに、作動用データAの一部(ここではデータ群B)が選択された場合には、乱数関数を用いて生成された所定のデータ(ファジング用データ)を表示する。
図15は、判定結果表示画面の一例を示す図である。制御部14は、ファジング用データ表示画面で表示されたファジング用データFを用いて、テストデータTを算出して、設定したテストデータTを対象プログラム102に入力することで、ファジングを実行する。そして、制御部14は、ファジング用データFに置き換えられた対象プログラム102の動作内容に基づき、対象プログラム102の動作の判定を行う。表示制御部20は、その判定結果を、図15に示す判定結果表示画面70に表示させる。判定結果表示画面70は、判定結果表示部72を有する。判定結果表示部72は、判定結果を表示する画像である。判定結果表示部72は、判定結果と、対象プログラム102がどのような動作をしたかの情報とを表示してもよい。
以上のように、本実施形態に係るデータ生成装置1は、ユーザに情報を表示する表示部12と、表示部12の表示を制御する表示制御部20とを有する。表示部12は、設定値入力画面56と、予測値表示画面58とを表示する。設定値入力画面56は、設定時間及び設定データ総量の少なくともいずれかをユーザが入力するための画面である。予測値表示画面58は、データ総量予測値及び時間予測値の少なくともいずれかを、複数の乱数関数毎に表示する。予測値算出部26は、設定値入力画面56が表示されている際に設定時間及び設定データ総量の少なくともいずれかが入力された場合に、データ総量予測値及び時間予測値の少なくともいずれかを、複数の乱数関数毎に算出する。表示制御部20は、データ総量予測値及び時間予測値の少なくともいずれかが算出された後、表示部12に予測値表示画面58を表示させる。
このデータ生成装置1は、設定値入力画面56と、予測値表示画面58とを、切り替えて表示させるため、ユーザが予測値の算出指示を適切に行いつつ、予測値の確認を適切に行うことができる。
また、表示部12は、置換データ入力画面52を表示する。置換データ入力画面52は、置換データの情報をユーザが入力するための画面である。表示制御部20は、置換データ入力画面52が表示されている際に置換データが入力された場合に、置換データ入力画面52から設定値入力画面56に表示を切り替える。このデータ生成装置1は、置換データ入力画面52と設定値入力画面56と予測値表示画面58とを、切り替えて表示させるため、ユーザが予測値の算出指示を適切に行いつつ、予測値の確認を適切に行うことができる。
また、表示部12は、算出用データ入力画面54を表示する。算出用データ入力画面54は、データ種類情報とデータ量情報とをユーザが入力するための画面である。表示制御部20は、算出用データ入力画面54が表示されている際にデータ種類情報及びデータ量情報が入力された場合に、算出用データ入力画面54から設定値入力画面56に表示を切り替える。このデータ生成装置1は、算出用データ入力画面54と設定値入力画面56と予測値表示画面58とを、切り替えて表示させるため、ユーザが予測値の算出指示を適切に行いつつ、予測値の確認を適切に行うことができる。
以上、本発明の実施形態を説明したが、これら実施形態の内容により実施形態が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。