(57)【特許請求の範囲】
【請求項１】
擬似乱数を生成する乱数生成部と、
入力された固有情報、及び前記乱数生成部が生成した前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成部と、
過去に生成された前記鍵データの統計情報を記憶する情報記憶部と、
前記情報記憶部が記憶する前記統計情報と、前記鍵生成部によって生成された前記候補鍵データとに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記鍵データの統計的な一様性を示す一様性検定情報を少なくとも算出する算出部と、
前記算出部によって算出された前記一様性検定情報に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が前記一様性の条件を満たすか否かを判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定部とを備えることを特徴とする鍵データ生成装置。
【請求項２】
前記検定情報には、前記入力情報と前記鍵データとの相関係数が含まれ、
前記算出部は、
さらに、前記情報記憶部が記憶する前記統計情報と、前記鍵生成部によって生成された前記候補鍵データ及び当該入力情報とに基づいて、前記相関係数を算出し、
前記判定部は、
前記判定処理において、前記算出部によって算出された前記相関係数に基づいて、生成された前記候補鍵データを含む前記鍵データの集合が、無相関性の条件を満たすか否かを判定し、前記一様性の条件を満たすと判定した場合、且つ、前記無相関性の条件を満たすと判定した場合に、前記統計的な偏りが生じないと判定する
ことを特徴とする請求項１に記載の鍵データ生成装置。
【請求項３】
擬似乱数を生成する乱数生成部と、
入力された固有情報、及び前記乱数生成部が生成した前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成部と、
過去に生成された前記鍵データの統計情報を記憶する情報記憶部と、
前記情報記憶部が記憶する前記統計情報と、前記鍵生成部によって生成された前記候補鍵データ及び当該入力情報とに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記入力情報と前記鍵データとの相関係数を少なくとも算出する算出部と、
前記算出部によって算出された前記相関係数に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が無相関性の条件を満たすか否を判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定部と
を備えることを特徴とする鍵データ生成装置。
【請求項４】
前記判定部は、
さらに、前記統計的な偏りが生じると判定した場合に、前記鍵生成部に前記擬似乱数を変更して再生成させた候補鍵データに基づいて、繰り返し前記判定処理を実行し、当該繰り返し回数が所定の回数に達した場合に、繰り返し生成された前記候補鍵データのうちの前記統計的な偏りが最も小さい候補鍵データを前記鍵データとして出力する
ことを特徴とする請求項１から請求項３のいずれか一項に記載の鍵データ生成装置。
【請求項５】
前記鍵生成部が生成した前記候補鍵データを第１の候補鍵データとして、当該入力情報と関連付けて記憶する鍵情報記憶部と、
前記鍵情報記憶部に記憶されている前記第１の候補鍵データの集合のうちの前記統計的な偏りが生じる原因として推定される部分集合を、各候補鍵データの差分に基づいて推定する原因推定部と
を備え、
前記判定部は、
前記第１の候補鍵データの集合を前記鍵データの集合として前記判定処理を実行し、
前記統計的な偏りが生じると判定した場合に、前記原因推定部によって推定された前記部分集合に含まれる候補鍵データを、前記鍵生成部に前記擬似乱数を変更して再生成させた第２の候補鍵データに置き換えて前記第１の候補鍵データとして、前記鍵情報記憶部に記憶させ、
前記鍵情報記憶部に記憶されている前記第１の候補鍵データの数が所定の数に達した場合に、前記所定の数の前記第１の候補鍵データを前記鍵データとして出力する
ことを特徴とする請求項１から請求項４のいずれか一項に記載の鍵データ生成装置。
【請求項６】
前記原因推定部は、
前記鍵情報記憶部に記憶されている前記第１の候補鍵データの集合のうちの前記統計的な偏りが生じる原因として推定される部分集合を、クラスタリングに基づいて推定することを特徴とする請求項５に記載の鍵データ生成装置。
【請求項７】
前記判定部は、
前記統計的な偏りが生じると判定した場合に、前記原因推定部によって推定された前記部分集合に含まれる候補鍵データを、前記鍵生成部に前記擬似乱数を変更して再生成させた第２の候補鍵データに置き換えて前記判定処理を再実行し、
再実行した前記判定処理において、前記統計的な偏りが生じると判定した場合、且つ、前記第２の候補鍵データに置き換え後の前記統計的な偏りが置き換え前の前記統計的な偏りより大きい場合に、置き換え前の前記候補鍵データを第２の候補鍵データに代えて、前記第１の候補鍵データとして、前記鍵情報記憶部に再び記憶させる
ことを特徴とする請求項５又は請求項６に記載の鍵データ生成装置。
【請求項８】
コンピュータを用いた鍵データ生成方法であって、
前記コンピュータが備える乱数生成部が、擬似乱数を生成する乱数生成手順と、
前記コンピュータが備える鍵生成部が、入力された固有情報、及び前記乱数生成手順によって生成された前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成手順と、
前記コンピュータが備える算出部が、過去に生成された前記鍵データの統計情報を記憶する情報記憶部が記憶する前記統計情報と、前記鍵生成手順によって生成された前記候補鍵データとに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記鍵データの統計的な一様性を示す一様性検定情報を少なくとも算出する算出手順と、
前記コンピュータが備える判定部が、前記算出手順によって算出された前記一様性検定情報に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が前記一様性の条件を満たすか否かを判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定手順と
を含むことを特徴とする鍵データ生成方法。
【請求項９】
コンピュータに、
乱数生成部が、擬似乱数を生成する乱数生成ステップと、
入力された固有情報、及び前記乱数生成ステップによって生成された前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成ステップと、
算出部が、過去に生成された前記鍵データの統計情報を記憶する情報記憶部が記憶する前記統計情報と、前記鍵生成ステップによって生成された前記候補鍵データとに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記鍵データの統計的な一様性を示す一様性検定情報を少なくとも算出する算出ステップと、
判定部が、前記算出ステップによって算出された前記一様性検定情報に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が前記一様性の条件を満たすか否かを判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定ステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵データ生成装置、鍵データ生成方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＩＣカードなどの情報処理装置において、暗号化技術が広く使用されている。暗号化技術に用いる暗号鍵を生成する技術として、パスワード等の固有情報、及びソルトと呼ばれる乱数値などの情報を入力値（入力情報）として、所定の鍵導出関数を用いて暗号鍵（鍵データ）を生成する技術が知られている（例えば、特許文献１を参照）。なお、鍵導出関数には、例えば、ＰＢＫＤＦ１（Password-Based Key Derivation Function 1）やＰＢＫＤＦ２（Password-Based Key Derivation Function 2）が知られている。このような鍵データを生成する技術では、入力情報に上述したソルトを用いることにより、鍵データを推定することを困難にしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１０２８３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、複数の鍵データを生成する場合に、鍵データは偏りのない値であることが望ましい。しかしながら、上述のような鍵データの生成技術では、生成した鍵データに偏りが生じてしまうことがある。生成した鍵データに偏りが生じた場合には、上述のような鍵データの生成技術では、攻撃者によって推測されてしまい、安全性の低下を招く場合がある。
【０００５】
本発明は、上記問題を解決すべくなされたもので、その目的は、安全性が低下することを低減しつつ適切な鍵データを生成することができる鍵データ生成装置、鍵データ生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、本発明の一態様は、擬似乱数を生成する乱数生成部と、入力された固有情報、及び前記乱数生成部が生成した前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成部と、過去に生成された前記鍵データの統計情報を記憶する情報記憶部と、前記情報記憶部が記憶する前記統計情報と、前記鍵生成部によって生成された前記候補鍵データとに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記鍵データの統計的な一様性を示す一様性検定情報を少なくとも算出する算出部と、前記算出部によって算出された前記一様性検定情報に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が前記一様性の条件を満たすか否かを判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定部とを備えることを特徴とする鍵データ生成装置である。
【０００７】
また、本発明の一態様は、上記の鍵データ生成装置において、前記検定情報には、前記入力情報と前記鍵データとの相関係数が含まれ、前記算出部は、さらに、前記情報記憶部が記憶する前記統計情報と、前記鍵生成部によって生成された前記候補鍵データ及び当該入力情報とに基づいて、前記相関係数を算出し、前記判定部は、前記判定処理において、前記算出部によって算出された前記相関係数に基づいて、生成された前記候補鍵データを含む前記鍵データの集合が、無相関性の条件を満たすか否かを判定し、前記一様性の条件を満たすと判定した場合、且つ、前記無相関性の条件を満たすと判定した場合に、前記統計的な偏りが生じないと判定することを特徴とする。
【０００８】
また、本発明の一態様は、擬似乱数を生成する乱数生成部と、入力された固有情報、及び前記乱数生成部が生成した前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成部と、過去に生成された前記鍵データの統計情報を記憶する情報記憶部と、前記情報記憶部が記憶する前記統計情報と、前記鍵生成部によって生成された前記候補鍵データ及び当該入力情報とに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記入力情報と前記鍵データとの相関係数を少なくとも算出する算出部と、前記算出部によって算出された前記相関係数に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が無相関性の条件を満たすか否を判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定部とを備えることを特徴とする鍵データ生成装置である。
【０００９】
また、本発明の一態様は、上記の鍵データ生成装置において、前記判定部は、さらに、前記統計的な偏りが生じると判定した場合に、前記鍵生成部に前記擬似乱数を変更して再生成させた候補鍵データに基づいて、繰り返し前記判定処理を実行し、当該繰り返し回数が所定の回数に達した場合に、繰り返し生成された前記候補鍵データのうちの前記統計的な偏りが最も小さい候補鍵データを前記鍵データとして出力することを特徴とする。
【００１０】
また、本発明の一態様は、上記の鍵データ生成装置において、前記鍵生成部が生成した前記候補鍵データを第１の候補鍵データとして、当該入力情報と関連付けて記憶する鍵情報記憶部と、前記鍵情報記憶部に記憶されている前記第１の候補鍵データの集合のうちの前記統計的な偏りが生じる原因として推定される部分集合を、各候補鍵データの差分に基づいて推定する原因推定部とを備え、前記判定部は、前記第１の候補鍵データの集合を前記鍵データの集合として前記判定処理を実行し、前記統計的な偏りが生じると判定した場合に、前記原因推定部によって推定された前記部分集合に含まれる候補鍵データを、前記鍵生成部に前記擬似乱数を変更して再生成させた第２の候補鍵データに置き換えて前記第１の候補鍵データとして、前記鍵情報記憶部に記憶させ、前記鍵情報記憶部に記憶されている前記第１の候補鍵データの数が所定の数に達した場合に、前記所定の数の前記第１の候補鍵データを前記鍵データとして出力することを特徴とする。
【００１１】
また、本発明の一態様は、上記の鍵データ生成装置において、前記原因推定部は、前記鍵情報記憶部に記憶されている前記第１の候補鍵データの集合のうちの前記統計的な偏りが生じる原因として推定される部分集合を、クラスタリングに基づいて推定することを特徴とする。
【００１２】
また、本発明の一態様は、上記の鍵データ生成装置において、前記判定部は、前記統計的な偏りが生じると判定した場合に、前記原因推定部によって推定された前記部分集合に含まれる候補鍵データを、前記第２の候補鍵データに置き換えて前記判定処理を再実行し、再実行した前記判定処理において、前記第２の候補鍵データに置き換え後の前記統計的な偏りが置き換え前の前記統計的な偏りより大きい場合に、置き換え前の前記候補鍵データを前記第２の候補鍵データに代えて、前記第１の候補鍵データとして、前記鍵情報記憶部に再び記憶させることを特徴とする。
【００１３】
また、本発明の一態様は、コンピュータを用いた鍵データ生成方法であって、前記コンピュータが備える乱数生成部が、擬似乱数を生成する乱数生成手順と、前記コンピュータが備える鍵生成部が、入力された固有情報、及び前記乱数生成手順によって生成された前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成手順と、前記コンピュータが備える算出部が、過去に生成された前記鍵データの統計情報を記憶する情報記憶部が記憶する前記統計情報と、前記鍵生成手順によって生成された前記候補鍵データとに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記鍵データの統計的な一様性を示す一様性検定情報を少なくとも算出する算出手順と、前記コンピュータが備える判定部が、前記算出手順によって算出された前記一様性検定情報に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が前記一様性の条件を満たすか否かを判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定手順とを含むことを特徴とする鍵データ生成方法である。
【００１４】
また、本発明の一態様は、コンピュータに、乱数生成部が、擬似乱数を生成する乱数生成ステップと、入力された固有情報、及び前記乱数生成ステップによって生成された前記擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、鍵データの候補鍵データを生成する鍵生成ステップと、算出部が、過去に生成された前記鍵データの統計情報を記憶する情報記憶部が記憶する前記統計情報と、前記鍵生成ステップによって生成された前記候補鍵データとに基づいて、前記鍵データの統計的な偏りを示す検定情報として、前記鍵データの統計的な一様性を示す一様性検定情報を少なくとも算出する算出ステップと、判定部が、前記算出ステップによって算出された前記一様性検定情報に基づいて、生成された前記候補鍵データを含めた前記鍵データの集合が前記一様性の条件を満たすか否かを判定することにより、前記統計的な偏りが生じるか否かを判定する判定処理を実行し、前記統計的な偏りが生じないと判定した場合に、前記候補鍵データを前記鍵データとして出力する判定ステップとを実行させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、安全性が低下することを低減しつつ適切な鍵データを生成することができる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施形態による鍵データ生成装置を示すブロック図である。
【図２】第１の実施形態における統計情報のデータ構成を示す図である。
【図３】第１の実施形態における候補鍵情報のデータ構成を示す図である。
【図４】第１の実施形態における鍵データ生成装置の動作の一例を示すフローチャートである。
【図５】本実施形態における一様性の状態の一例を示す図である。
【図６】本実施形態における無相関性の状態の一例を示す図である。
【図７】第１の実施形態における鍵データ生成装置の動作の別の一例を示すフローチャートである。
【図８】第２の実施形態による鍵データ生成装置を示すブロック図である。
【図９】第２の実施形態における統計情報のデータ構成を示す図である。
【図１０】第２の実施形態における候補鍵情報のデータ構成を示す図である。
【図１１】第２の実施形態における鍵データ生成装置の動作の一例を示す第１のフローチャートである。
【図１２】第２の実施形態における鍵データ生成装置の動作の一例を示す第２のフローチャートである。
【図１３】本実施形態における一様性を満たさない原因推定の一例を示す図である。
【図１４】本実施形態における無相関性を満たさない原因推定の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施形態による鍵データ生成装置について図面を参照して説明する。
［第１の実施形態］
図１は、本実施形態による鍵データ生成装置１を示す概略ブロック図である。
図１において、鍵データ生成装置１は、擬似乱数生成部１０、鍵生成部２０、情報記憶部３０、算出部４０、判定部５０、及び候補鍵記憶部６０を備えている。ここで、算出部４０と、判定部５０とは、検定部２（検定器）に対応する。
【００１８】
擬似乱数生成部１０（乱数生成部）は、擬似乱数（又は乱数）を生成する乱数生成器である。擬似乱数生成部１０は、後述する判定部５０の指示に基づいて、例えば、所定の暗号処理に用いる暗号鍵などの導出鍵（鍵データ）の生成に用いるソルトとして、擬似乱数を生成する。ここで、ソルトとは、導出鍵を生成する入力値（入力情報）にランダムな変化を与えるための情報のことであり、例えば、擬似乱数が用いられる。
【００１９】
鍵生成部２０は、鍵データ生成装置１の外部から入力された固有情報、及び擬似乱数生成部１０が生成した擬似乱数を含む入力値（入力情報）と、所定の鍵導出関数とに基づいて、導出鍵の候補鍵（候補鍵データ）を生成する。鍵生成部２０は、鍵導出関数として、例えば、ＰＢＫＤＦ１（Password-Based Key Derivation Function 1）やＰＢＫＤＦ２（Password-Based Key Derivation Function 2）を用いて候補鍵を生成する。また、固有情報とは、例えば、パスワードやユーザＩＤなどの情報であり、ユーザ又は暗号処理を使用する情報処理装置（例えば、ＩＣカード）などにとって、ユニーク（固有）な情報である。ここでは、鍵生成部２０は、入力値として、例えば、パスワードと擬似乱数（ソルト値）とを含む情報を用いる。
【００２０】
情報記憶部３０は、過去に生成された導出鍵の統計情報であって、検定情報を算出するために必要な情報を記憶している。この統計情報は、導出鍵が生成されるごとに、更新される情報である。統計情報の詳細については後述する。
【００２１】
検定部２は、鍵生成部２０によって生成された候補鍵が、導出鍵として統計的な偏りがあるか否かを検定し、検定結果に応じて、候補鍵を導出鍵として出力する検定器である。
検定部２は、算出部４０と、判定部５０とを備えている。
【００２２】
算出部４０は、情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報を算出する。本実施形態では、算出部４０は、導出鍵の統計的な偏りを検定するための検定情報として、一様性検定情報及び相関係数（無相関性検定情報）の２つを算出する。ここで、検定情報とは、例えば、導出鍵の統計的な偏りを示す検定値である。また、一様性検定情報とは、導出鍵の統計的な一様性の指標を示す検定情報のことであり、例えば、カイ２乗検定に用いるカイ２乗値（χ２値）である。また、相関係数は、上述した入力値と導出鍵（候補鍵を含む）との相関係数を示している。
すなわち、算出部４０は、情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、カイ２乗値（一様性検定情報）を算出する。また、算出部４０は、さらに、情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、入力値と導出鍵との相関係数を検定情報として算出する。
また、算出部４０は、一様性算出部４１、及び相関係数算出部４２を備えている。
【００２３】
一様性算出部４１は、上述したように情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報として、カイ２乗値を算出する。ここで、導出鍵の値（１０進数、２進数など）の生成可能な範囲は、一定の間隔に分割（例えば、１００等分割）されている。一様性算出部４１は、下記の式（１）に基づいてカイ２乗値（χ２値）を算出する。
【００２４】
【数１】
0005759932.tif 000002
【００２５】
ここで、変数Ｏｉは、上述した分割数により分割された各対象範囲（各区間）における鍵の出力数を示している。また、変数Ｅｉは、分割数に応じた導出鍵の理想値を示し、具体的には、出力した導出鍵の総数を上述した分割数により除算した値である。また、変数ｋは、上述した分割数を示している。
なお、この変数Ｏｉ、変数Ｅｉ、及び変数ｋの値は、上述した統計情報に含まれ、情報記憶部３０に記憶されている。
【００２６】
相関係数算出部４２は、上述したように情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報として、上述した相関係数（ｒ）を算出する。相関係数算出部４２は、下記の式（２）に基づいて相関係数（ｒ）を算出する。
【００２７】
【数２】
0005759932.tif 000003
【００２８】
ここで、変数ｘｉは、ｉ番目の入力値を示し、変数ｙｉは、ｉ番目の導出鍵を示している。すなわち、変数ｘｉは、鍵生成部２０における入力値（入力情報）であり、変数ｙｉは、鍵生成部２０から出力される導出鍵である。また、変数ｎは、出力した導出鍵の総数を示している。また、変数ｘ−は、入力値の相加平均値を示し、変数ｙ−は、導出鍵の相加平均値を示している。なお、ここでは、本文中の上付の“−”は文字の真上に付けられた記号を表すこととする。
【００２９】
判定部５０は、算出部４０によって算出された算出結果に基づいて、生成された候補鍵を含めた導出鍵の集合が統計的な偏りが生じるか否かとして判定する判定処理する。判定部５０は、統計的な偏りが生じていないと判定した場合に、候補鍵を導出鍵として出力する。判定部５０は、例えば、算出部４０（一様性算出部４１）によって算出されたカイ２乗値に基づいて、生成された候補鍵を含めた導出鍵の集合が一様性（一様性の条件）を満たすか否かを判定することにより、統計的な偏りが生じるか否かを判定する判定処理を実行する。また、判定部５０は、例えば、判定処理において、算出部４０（相関係数算出部４２）によって算出された相関係数に基づいて、生成された候補鍵を含めた導出鍵の集合が無相関性（無相関性の条件）を満たすか否かを判定することにより、統計的な偏りが生じるか否かを判定する。すなわち、判定部５０は、一様性（一様性の条件）を満たすと判定した場合、且つ、無相関性（無相関性の条件）を満たすと判定した場合に、統計的な偏りが生じないと判定する。
【００３０】
また、判定部５０は、さらに、統計的な偏りが生じると判定した場合に、鍵生成部２０に擬似乱数を変更して再生成させた候補鍵に基づいて、繰り返し上述した判定処理を実行する。そして、判定部５０は、当該繰り返し回数が予め定められた所定の回数に達した場合（所定回数以上になった場合）に、繰り返し生成された候補鍵のうちの統計的な偏りが最も小さい候補鍵を導出鍵として出力する。
また、判定部５０は、一様性判定部５１、無相関性判定部５２、及び再生成判定部５３を備えている。
【００３１】
一様性判定部５１は、算出部４０（一様性算出部４１）によって算出されたカイ２乗値に基づいて、生成された候補鍵を含めた導出鍵の集合が一様性を満たすか否かを判定することにより、上述した統計的な偏りが生じるか否かを判定する。一様性判定部５１は、例えば、一様性算出部４１によって算出されたカイ２乗値に基づいて、有意水準０．０５（５％）を下回った場合に、一様性がない（一様性の条件を満たさない）と判定する。
【００３２】
無相関性判定部５２は、算出部４０（相関係数算出部４２）によって算出された相関係数に基づいて、生成された候補鍵を含めた導出鍵の集合が無相関性を満たすか否かを判定することにより、上述した統計的な偏りが生じるか否かを判定する。無相関性判定部５２は、例えば、相関係数算出部４２によって算出された相関係数（ｒ）が（−０．２≦ｒ≦０．２）の条件を満たす場合に、無相関（相関がない）と判定し、相関係数（ｒ）が（ｒ＜−０．２又は０．２＜ｒ）の条件を満たす場合に、相関があると判定する。
【００３３】
再生成判定部５３は、一様性判定部５１及び無相関性判定部５２の判定結果に基づいて統計的な偏りが生じていないと判定した場合に、候補鍵を導出鍵として出力する。
また、再生成判定部５３は、統計的な偏りが生じると判定した場合に、鍵生成部２０に擬似乱数を変更して再生成させた候補鍵に基づいて、繰り返し上述した判定処理を実行するとともに、後述する候補鍵記憶部６０に、統計的な偏りが生じると判定した候補鍵と、対応する入力値（固有情報とソルトの値）と、カイ２乗値と、相関係数とを関連付けて記憶させる。この際に、再生成判定部５３は、同一の固有情報に対して、既に記憶されている統計的な偏りが生じると判定した候補鍵の情報がある場合には、２つの候補鍵のうち統計的な偏りが小さい候補鍵を候補鍵記憶部６０に記憶させる。この場合、再生成判定部５３は、例えば、カイ２乗値と相関係数の絶対値との積の値が小さい方を、統計的な偏りが小さい候補鍵であると判定する。
【００３４】
また、再生成判定部５３は、一様性判定部５１及び無相関性判定部５２の判定結果に基づいて統計的な偏りが生じていると判定した場合に、鍵生成部２０に擬似乱数を変更して再生成させて、候補鍵を鍵生成部２０に再生成させるとともに、上述した判定処理を繰り返し実行する。この繰り返し回数が予め定められた所定の回数に達した場合（所定回数以上になった場合）に、再生成判定部５３は、繰り返し生成された候補鍵のうちの統計的な偏りが最も小さい候補鍵を導出鍵として出力する。すなわち、再生成判定部５３は、繰り返し回数が所定の回数に達した場合に、統計的な偏りが最も小さい候補鍵を候補鍵記憶部６０から読み出し、読み出した候補鍵を導出鍵として鍵データ生成装置１の外部に出力する。
また、再生成判定部５３は、候補鍵を導出鍵として出力する場合に、候補鍵記憶部６０に記憶されている候補鍵を消去（クリア）する。
【００３５】
候補鍵記憶部６０（鍵情報記憶部）は、判定部５０によって統計的な偏りが生じると判定された候補鍵の情報を示す候補鍵情報を記憶する。候補鍵記憶部６０は、例えば、統計的な偏りが生じると判定した候補鍵と、対応する入力値（固有情報とソルトの値）と、カイ２乗値と、相関係数とを関連付けて記憶する。なお、候補鍵記憶部６０が記憶する候補鍵の情報の構成については、詳細に後述する。
【００３６】
次に、情報記憶部３０が記憶する上述した統計情報のデータ構成について説明する。
図２は、本実施形態における統計情報のデータ構成を示す図である。
図２に示すように、統計情報には、導出鍵の生成数、一様性検定の有意水準、相関係数の閾値、導出鍵の鍵値範囲の分割数、各分割範囲内の導出鍵の数、分割数に応じた導出鍵の理想値、最新のカイ２乗値、最新の相関係数、入力値の相加平均値、及び出力値（導出鍵）の相加平均値を含んでいる。
【００３７】
ここで、導出鍵の生成数は、出力した導出鍵の総数（ｎ）に対応し、導出鍵の鍵値範囲の分割数は、上述した分割数（ｋ）に対応する。また、一様性検定の有意水準は、一様性を検定する判定基準であり、例えば、０．０５が予め定められている。また、相関係数の閾値は、無相関性の条件を満たすか否かを判定するための閾値であり、例えば、下限の閾値が−０．２、上限の閾値が０．２に定められている。また、各分割範囲内の導出鍵の数は、例えば、上述した変数Oｉの値に対応し、分割数に応じた導出鍵の理想値は、例えば、上述した変数Ｅｉの値に対応する。また、入力値の相加平均値は、例えば、上述した変数ｘ−の値に対応し、出力値（導出鍵）の相加平均値は、例えば、上述した変数ｙ−の値に対応する。
なお、判定部５０は、導出鍵を鍵データ生成装置１の外部に出力するごとに、この情報記憶部３０に記憶されている統計情報を更新する。
【００３８】
次に、候補鍵記憶部６０が記憶する上述した候補鍵情報のデータ構成について説明する。
図３は、本実施形態における候補鍵情報のデータ構成を示す図である。
図３に示すように、候補鍵情報には、固有情報、ソルト値（仮ソルト）、候補鍵、一様性判定結果値（χ２値）、及び無相関性判定結果値が含まれている。ここで、無相関性判定結果値は、例えば、相関係数の絶対値（｜ｒ｜）に対応する。また、候補鍵記憶部６０が記憶する候補鍵は、判定部５０によって統計的な偏りが生じると判定された候補鍵の候補鍵情報であり、例えば、統計的な偏りが生じると判定された候補鍵のうち、統計的な偏りが最も小さい候補鍵の候補鍵情報である。
【００３９】
次に、本実施形態における鍵データ生成装置１の動作について説明する。
図４は、本実施形態における鍵データ生成装置１の動作の一例を示すフローチャートである。
図４において、まず、鍵データ生成装置１は、ソルト値（仮ソルト）を生成する（ステップＳ１０１）。すなわち、擬似乱数生成部１０は、擬似乱数を仮ソルトとして生成し、生成した仮ソルトを鍵生成部２０に出力する。
【００４０】
次に、鍵生成部２０は、仮ソルトと、鍵データ生成装置１の外部から入力された固有情報（例えば、パスワード）とを連結し、鍵導出関数により候補鍵を生成する（ステップＳ１０２）。すなわち、鍵生成部２０は、擬似乱数生成部１０が生成した仮ソルトと、鍵データ生成装置１の外部から入力された固有情報とを連結した情報を入力値（入力情報）として、ＰＢＫＤＦ１などの鍵導出関数に基づいて、導出鍵の候補となる候補鍵を生成する。鍵生成部２０は、生成した入力値と候補鍵とを算出部４０に出力する。
【００４１】
次に、算出部４０は、一様性検定情報を算出する（ステップＳ１０３）。すなわち、算出部４０の一様性算出部４１は、上述したように情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報（一様性検定情報）として、カイ２乗値を算出する。算出部４０は、算出したカイ２乗値を判定部５０に出力する。
【００４２】
なお、算出部４０は、統計情報のうち、導出鍵の生成数、導出鍵の鍵値範囲の分割数、各分割範囲内の導出鍵の数、分割数に応じた導出鍵の理想値、及び最新のカイ２乗値を用いてカイ２乗値を算出する。すなわち、算出部４０は、これらの統計情報を用いて、候補鍵の追加による変化分を算出して、生成された候補鍵を含めた導出鍵の集合のカイ２乗値を算出する。これにより、算出部４０は、過去に生成した全ての導出鍵の値を記憶しておく必要がなく、カイ２乗値を算出する演算量を低減することができる。
【００４３】
次に、判定部５０は、一様性を満たすか否かを判定する（ステップＳ１０４）。すなわち、判定部５０（一様性判定部５１）は、算出部４０（一様性算出部４１）によって算出されたカイ２乗値に基づいて、生成された候補鍵を含めた導出鍵の集合が一様性を満たすか否かを、上述した統計的な偏りが生じるか否かとして判定する。具体的には、判定部５０（一様性判定部５１）は、情報記憶部３０から読み出した有意水準（例えば、０．０５）と、一様性算出部４１によって算出されたカイ２乗値とに基づいて一様性を満たすか否かを判定する。
判定部５０は、一様性を満たすと判定した場合（ステップＳ１０４：ＹＥＳ）に、処理をステップＳ１０５に進め、一様性を満たさないと判定した場合（ステップＳ１０４：ＮＯ）に、処理をステップＳ１０８に進める。
【００４４】
次に、ステップＳ１０５において、算出部４０は、無相関性検定情報を算出する（ステップＳ１０５）。すなわち、算出部４０の相関係数算出部４２は、上述したように情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報（無相関性検定情報）として、相関係数（ｒ）を算出する。算出部４０は、算出した相関係数（ｒ）を判定部５０に出力する。
【００４５】
なお、算出部４０は、統計情報のうち、導出鍵の生成数、最新の相関係数、入力値の相加平均値、及び出力値（導出鍵）の相加平均値を用いて相関係数（ｒ）を算出する。すなわち、算出部４０は、これらの統計情報を用いて、候補鍵の追加による変化分を算出して、生成された候補鍵を含めた導出鍵の集合の相関係数（ｒ）を算出する。これにより、算出部４０は、過去に生成した全ての導出鍵の値を記憶しておく必要がなく、相関係数（ｒ）を算出する演算量を低減することができる。
【００４６】
次に、判定部５０は、無相関性を満たすか否かを判定する（ステップＳ１０６）。すなわち、判定部５０（無相関性判定部５２）は、算出部４０（相関係数算出部４２）によって算出された相関係数に基づいて、生成された候補鍵を含めた導出鍵の集合が無相関性を満たすか否かを、上述した統計的な偏りが生じるか否かとして判定する。
具体的に、判定部５０（無相関性判定部５２）は、情報記憶部３０から読み出した相関係数の閾値（例えば、下限の閾値が−０．２、上限の閾値が０．２）と、相関係数算出部４２によって算出された相関係数とに基づいて無相関性を満たすか否かを判定する。すなわち、無相関性判定部５２は、例えば、相関係数算出部４２によって算出された相関係数（ｒ）が（−０．２≦ｒ≦０．２）の条件を満たす場合に、無相関（無相関性の条件を満たす）と判定し、相関係数（ｒ）が（ｒ＜−０．２又は０．２＜ｒ）の条件を満たす場合に、相関がある（無相関性の条件を満たさない）と判定する。
【００４７】
判定部５０は、無相関性を満たすと判定した場合（ステップＳ１０６：ＹＥＳ）に、処理をステップＳ１０７に進め、無相関性を満たさないと判定した場合（ステップＳ１０６：ＮＯ）に、処理をステップＳ１０８に進める。
なお、ステップＳ１０３〜ステップＳ１０６までの処理が、上述した判定処理に対応する。
【００４８】
ステップＳ１０７において、判定部５０は、候補鍵を導出鍵として鍵データ生成装置１の外部に出力する。判定部５０は、導出鍵を鍵データ生成装置１の外部に出力した後、情報記憶部３０に記憶されている統計情報を更新して、導出鍵生成処理を終了させる。なお、判定部５０は、候補鍵を導出鍵として出力する場合に、候補鍵記憶部６０に記憶されている候補鍵を消去（クリア）する。
【００４９】
一方、ステップＳ１０８において、判定部５０（再生成判定部５３）は、上述した繰り返し回数が所定の回数以上か否かを判定する。判定部５０（再生成判定部５３）は、繰り返し回数が所定の回数以上である場合（ステップＳ１０８：ＹＥＳ）に処理をステップＳ１０９に進める。また、判定部５０（再生成判定部５３）は、繰り返し回数が所定の回数未満である場合（ステップＳ１０８：ＮＯ）に処理をステップＳ１０１に戻して、異なるソルト値に基づいて候補鍵を再生成させて、ステップＳ１０１〜ステップＳ１０８までの処理を繰り返し実行させる。
【００５０】
なお、判定部５０（再生成判定部５３）は、処理をステップＳ１０１に戻す際に、統計的な偏りが生じると判定された候補鍵の情報を示す候補鍵情報を候補鍵記憶部６０に記憶させる。ここで、判定部５０（再生成判定部５３）は、具体的に、既に記憶されている統計的な偏りが生じると判定した候補鍵の情報がある場合には、候補鍵記憶部６０に記憶されている候補鍵情報を読み出す。そして、判定部５０（再生成判定部５３）は、読み出した候補鍵情報と、新たに生成した候補鍵情報とを比較して、新たに生成した候補鍵が候補鍵記憶部６０に記憶されている候補鍵よりも統計的な偏りが小さい場合に、新たに生成した候補鍵情報を候補鍵記憶部６０に記憶させる。
【００５１】
ステップＳ１０９において、判定部５０は、繰り返し生成した候補鍵のうちで最も統計的な偏りが小さい候補鍵を導出鍵として、鍵データ生成装置１の外部に出力する。判定部５０は、導出鍵を鍵データ生成装置１の外部に出力した後、情報記憶部３０に記憶されている統計情報を更新して、導出鍵生成処理を終了させる。
【００５２】
このように、本実施形態における鍵データ生成装置１は、一様性及び無相関性を備えた統計的に偏りのない導出鍵を生成する。ここで、統計的な偏りが導出鍵に生じた場合のリスクについて説明する。
【００５３】
図５は、本実施形態における一様性の状態の一例を示す図である。
図５（ａ）は、参考として、生成された導出鍵（鍵Ａ〜鍵Ｆ）が一様性を満たしていない場合の一例を示している。この場合、導出鍵は、鍵の生成可能範囲Ｒ１よりも狭い範囲Ｒ２内に偏って生成されているため、攻撃者（悪意を持った第三者）によって、生成された導出鍵（例えば、鍵Ｆ）の値がどの辺りになるかを推定することは可能である。
【００５４】
一方、図５（ｂ）は、生成された導出鍵（鍵Ａ〜鍵Ｆ）が一様性を満たしている場合の一例を示している。この場合、導出鍵は、範囲Ｒ１にほぼ等しい範囲Ｒ３内に一様に生成されているため、攻撃者によって、生成された導出鍵（例えば、鍵Ｆ）の値が、範囲Ｒ１のどの辺りになるかを推定することは、困難（不可能）である。本実施形態では、鍵データ生成装置１は、図５（ｂ）のような一様性を満たした導出鍵を生成する。
【００５５】
また、図６は、本実施形態における無相関性の状態の一例を示す図である。
図６（ａ）は、参考として、生成された導出鍵（鍵Ａ〜鍵Ｆ）が無相関性を満たしていない場合（相関性のある場合）の一例を示している。この場合、導出鍵は、入力値と導出鍵の値との間に相関があるため、攻撃者によって、その入力値から生成された導出鍵（例えば、鍵Ｆ）の値がどの辺りになるかを推定することは可能である。
【００５６】
一方、図６（ｂ）は、生成された導出鍵（鍵Ａ〜鍵Ｆ）が無相関性を満たしている場合（相関性のない場合）の一例を示している。入力値と導出鍵の値との間に相関があるため、攻撃者によって、その入力値から生成された導出鍵（例えば、鍵Ｆ）の値がどの辺りになるかを推定することは、困難（不可能）である。本実施形態では、鍵データ生成装置１は、図６（ｂ）のような無相関性を満たした導出鍵を生成する。
【００５７】
以上説明したように、本実施形態における鍵データ生成装置１は、擬似乱数生成部１０が、擬似乱数を生成し、鍵生成部２０が、入力された固有情報、及び擬似乱数生成部１０が生成した擬似乱数を含む入力値（入力情報）と、所定の鍵導出関数とに基づいて、導出鍵（鍵データ）の候補鍵（候補鍵データ）を生成する。また、情報記憶部３０は、過去に生成された導出鍵の統計情報を記憶する。算出部４０は、情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを示す検定情報として、導出鍵の統計的な一様性を示す一様性検定情報（カイ２乗値）を少なくとも算出する。そして、判定部５０は、算出部４０によって算出された一様性検定情報（カイ２乗値）に基づいて、生成された候補鍵を含めた導出鍵の集合が一様性の条件を満たすか否かを判定することにより、統計的な偏りが生じるか否かとして判定する判定処理を実行する。判定部５０は、統計的な偏りが生じないと判定した場合に、候補鍵を導出鍵として出力する。
【００５８】
これにより、本実施形態における鍵データ生成装置１は、一様性（一様性の条件）を満たした統計的な偏りのない導出鍵を生成することができるので、攻撃者に導出鍵の推定をされる可能性を低減することができる。したがって、本実施形態における鍵データ生成装置１は、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
【００５９】
また、本実施形態では、上述の検定情報には、入力値と導出鍵との相関係数が含まれる。算出部４０は、さらに、情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵及び当該入力値とに基づいて、入力値と導出鍵との相関係数を算出する。判定部５０は、上述した判定処理において、算出部４０によって算出された相関係数に基づいて、生成された候補鍵を含む導出鍵の集合が、無相関性の条件を満たすか否かを判定する。そして、判定部５０は、一様性の条件を満たすと判定した場合、且つ、無相関性の条件を満たすと判定した場合に、生成された候補鍵を含む導出鍵の集合が統計的な偏りが生じないと判定する。
これにより、本実施形態における鍵データ生成装置１は、一様性（一様性の条件）を満たし、且つ、無相関性（無相関性の条件）を満たす統計的な偏りのない導出鍵を生成することができるので、攻撃者に導出鍵の推定をされる可能性を低減することができる。したがって、本実施形態における鍵データ生成装置１は、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
【００６０】
また、本実施形態では、判定部５０は、さらに、統計的な偏りが生じると判定した場合に、鍵生成部２０に擬似乱数を変更して再生成させた候補鍵に基づいて、繰り返し上述の判定処理を実行する。判定部５０は、当該繰り返し回数が所定の回数に達した場合に、繰り返し生成された候補鍵のうちの統計的な偏りが最も小さい候補鍵を導出鍵として出力する。
これにより、本実施形態における鍵データ生成装置１は、統計的な偏りが生じると判定した場合に、候補鍵の再生成を無限に繰り返すことを防ぐことができる。また、本実施形態における鍵データ生成装置１は、候補鍵のうちで、最も統計的な偏りの少ない候補鍵を導出鍵とするので、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
【００６１】
また、本実施形態では、算出部４０は、情報記憶部３０が記憶する統計情報と生成した候補鍵とに基づいて、候補鍵の追加による変化分を算出して、生成された候補鍵を含めた導出鍵の集合の検定情報（カイ２乗値及び相関係数）を算出する。これにより、本実施形態における鍵データ生成装置１は、過去に生成した全ての導出鍵の値を記憶しておく必要がなく、検定情報を算出する演算量を低減することができる。
【００６２】
また、本実施形態では、候補鍵記憶部６０は、統計的な偏り生じると判定された候補鍵のうちの、統計的な偏りが最も小さい候補鍵を記憶する。これにより、本実施形態における鍵データ生成装置１は、候補鍵記憶部６０の記憶容量を低減することができる、
【００６３】
なお、本実施形態では、導出鍵の統計的な偏りを一様性と無相関性との２つの検定により判定する形態を説明したが、一様性と無相関性とのいずれか一方により導出鍵の統計的な偏りを判定する形態であってもよい。
例えば、算出部４０が、情報記憶部３０が記憶する統計情報と、鍵生成部２０によって生成された候補鍵及び当該入力値（入力情報）とに基づいて、導出鍵の統計的な偏りを示す検定情報として、入力値と導出鍵との相関係数を少なくとも算出する。判定部５０は、算出部４０によって算出された相関係数に基づいて、生成された候補鍵を含めた導出鍵の集合が無相関性の条件を満たすか否を判定することにより、統計的な偏りが生じるか否かを判定する判定処理を実行する。そして、判定部５０は、統計的な偏りが生じないと判定した場合に、候補鍵を導出鍵として出力する。
【００６４】
これにより、本実施形態における鍵データ生成装置１は、無相関性（無相関性の条件）を満たした統計的な偏りのない導出鍵を生成することができるので、攻撃者に導出鍵の推定をされる可能性を低減することができる。したがって、本実施形態における鍵データ生成装置１は、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
【００６５】
また、本実施形態では、算出部４０がカイ２乗値を算出する際に、一例として、導出鍵の値（１０進数、２進数など）の生成可能な範囲を一定の間隔に分割（例えば、１００等分割）する形態を説明したが、これに限定されるものではない。例えば、鍵導出関数や導出鍵を暗号鍵として用いる暗号アルゴリズムに応じて、一定ではない重み付けをした間隔に分割する形態でもよいし、生成可能な範囲のうちの所定の範囲において分割するする形態でもよい。
【００６６】
また、鍵データ生成装置１は、導出鍵を暗号鍵として用いる暗号アルゴリズムに応じて、鍵生成部２０が生成した候補鍵がウイーク鍵（弱鍵）である場合に、候補鍵から除外して、候補鍵を再生成してもよい。ここでウイーク鍵（弱鍵）とは、暗号アルゴリズム上、解読し易いなどの安全性を低減する可能性があることが予め判明している鍵データのことである。
例えば、図７は、候補鍵がウイーク鍵（弱鍵）である場合に、鍵データ生成装置１が候補鍵から除外する動作の一例を示すフローチャートである。
図７において、導出鍵生成処理の動作は、ステップＳ１０２の処理とステップＳ１０３の処理との間に、ステップＳ１１０の処理が追加になっている点を除いて、図４のフローチャートと同様である。なお、この図において、図４と同一の処理には、同一のステップ（符号）を付し、その説明を省略する。
【００６７】
ステップＳ１０２の処理の後に、鍵生成部２０は、生成した候補鍵がウイーク鍵（弱鍵）であるか否かを判定する（ステップＳ１１０）。例えば、鍵生成部２０は、暗号アルゴリズムごとにウイーク鍵（弱鍵）の一覧がリストとして予め記憶されている記憶部（不図示）を有している。鍵生成部２０は、このリストを参照することにより、生成した候補鍵がウイーク鍵（弱鍵）であるか否かを判定する。鍵生成部２０は、生成した候補鍵がウイーク鍵（弱鍵）であると判定した場合に、処理をステップＳ１０１に戻し、新しいソルトにより、候補鍵を再生成する。また、鍵生成部２０は、生成した候補鍵がウイーク鍵（弱鍵）でないと判定した場合に、処理をステップＳ１０３に進める。
鍵データ生成装置１は、上述したステップＳ１０３〜ステップＳ１０９の処理により、導出鍵を生成する。
【００６８】
このように、ウイーク鍵（弱鍵）を候補鍵から除外することができるので、この場合の鍵データ生成装置１は、図４に示される処理の場合に比べて、安全性を向上させた適切な導出鍵（鍵データ）を生成することができる。
【００６９】
また、本実施形態によれば、鍵データ生成方法は、乱数生成手順と、鍵生成手順と、算出手順と、判定手順とを含んでいる。乱数生成手順は、擬似乱数生成部１０が擬似乱数を生成し、鍵生成手順は、鍵生成部２０が入力された固有情報、及び乱数生成手順によって生成された擬似乱数を含む入力情報と、所定の鍵導出関数とに基づいて、導出鍵の候補鍵を生成する。算出手順は、過去に生成された導出鍵の統計情報を記憶する情報記憶部３０が記憶する統計情報と、鍵生成手順によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを示す検定情報として、導出鍵の統計的な一様性を示す一様性検定情報を算出部４０が少なくとも算出する。判定手順は、判定部５０が算出手順によって算出された一様性検定情報に基づいて、生成された候補鍵を含めた導出鍵の集合が一様性の条件を満たすか否かを、統計的な偏りが生じるか否かとして判定する判定処理を実行し、統計的な偏りが生じないと判定した場合に、候補鍵データを導出鍵として出力する。
これにより、本実施形態における鍵データ生成方法は、一様性（一様性の条件）を満たした統計的な偏りのない導出鍵を生成することができるので、攻撃者に導出鍵の推定をされる可能性を低減することができる。したがって、本実施形態における鍵データ生成方法は、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
【００７０】
次に、本発明の第２の実施形態について、図面を参照して説明する。
［第２の実施形態］
上述した第１の実施形態では、鍵データ生成装置１は、過去に出力した導出鍵より算出した統計情報に基づいて検定情報を算出し、算出した検定情報に基づいて導出鍵に統計的な偏りがあるか否かを判定している。これは、導出鍵の値そのものを記憶する必要をなくすことにより、安全性を向上させるためであるが、過去に出力した導出鍵を変更することはできない。例えば、過去に出力した導出鍵の集合に統計的な偏りがあり、十分な数の導出鍵が生成されていなかった等により、この統計的な偏りが見つかられなかった場合には、新たに生成した候補鍵を含めた集合が、一様性、又は無相関性を満たせないことが考えられる。そこで、本実施形態では、過去に出力した導出鍵に統計的な偏りの原因がある場合にも対応可能な鍵データ生成装置の一例について説明する。
【００７１】
図８は、本実施形態による鍵データ生成装置１ａを示す概略ブロック図である。
図８において、鍵データ生成装置１ａは、擬似乱数生成部１０、鍵生成部２０、情報記憶部３０ａ、算出部４０、判定部５０ａ、候補鍵記憶部６０ａ、及び原因推定部７０を備えている。ここで、算出部４０と、判定部５０ａとは、検定部２ａ（検定器）に対応する。なお、この図において、図１と同一の構成については同一の符号を付し、その説明を省略する。
本実施形態では、原因推定部７０を備える点と、情報記憶部３０ａ及び候補鍵記憶部６０ａのデータ構成と、判定部５０ａの機能とが、第１の実施形態における鍵データ生成装置１と異なる。また、鍵データ生成装置１ａは、所定の数（例えば、Ｎ個）の固有情報に対して、導出鍵（例えば、Ｎ個の導出鍵）を生成し、生成した導出鍵をまとめて外部に出力する。
【００７２】
情報記憶部３０ａは、図９に示すように、過去に生成された導出鍵の統計情報であって、検定情報を算出するために必要な情報と、候補鍵を出力する閾値（例えば、Ｎ個）と、生成した候補鍵の数（例えば、ｎ個）とを記憶している。ここで、過去に生成された導出鍵の統計情報（検定情報を算出するために必要な情報）は、第１の実施形態と同様である。なお、情報記憶部３０ａに記憶される情報は、導出鍵が生成されるごとに、更新される。
【００７３】
候補鍵記憶部６０ａ（鍵情報記憶部）は、鍵生成部２０が生成した候補鍵である第１の候補鍵データと当該入力値（入力情報）とを関連付けて記憶する。すなわち、候補鍵記憶部６０ａは、例えば、候補鍵を識別するＩＤ（候補鍵番号など）と、候補鍵（第１の候補鍵データ）と、対応する入力値（固有情報及びソルトの値）とを関連付けて記憶する。ここで、候補鍵記憶部６０ａは、鍵生成部２０によって生成された候補鍵が上述した候補鍵を出力する閾値（例えば、Ｎ個）に達するまで、複数（例えば、ｎ個）の候補鍵を記憶する。すなわち、候補鍵記憶部６０ａには、第１の候補鍵データとして鍵生成部２０によって生成された候補鍵が全て記憶されている。なお、候補鍵記憶部６０ａが記憶する候補鍵の情報の構成については、詳細に後述する。
【００７４】
原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因として推定される部分集合を、候補鍵記憶部６０ａに記憶されている候補鍵の情報に基づいて推定する。例えば、原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因（一様性を満たさない原因）として推定される部分集合を、各候補鍵の値の差分に基づいて推定する。また、原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因（無相関性を満たさない原因）として推定される部分集合を、クラスタリングに基づいて推定する。
また、原因推定部７０は、一様性原因推定部７１と無相関性原因推定部７２とを備えている。
【００７５】
一様性原因推定部７１は、例えば、候補鍵記憶部６０ａに記憶されている各候補鍵の値の差分に基づいて、最も値の近い候補鍵の組み合わせを、一様性（一様性の条件）を満たさない原因となる部分集合として抽出する。一様性原因推定部７１は、判定部５０ａの指示に基づいて。推定した原因の部分集合である上述の候補鍵の組み合わせを判定部５０ａに出力する。
ここで、候補鍵の値の差分とは、２つの候補鍵の値（例えば、１０進数値や２進数値）の差のことである。
【００７６】
無相関性原因推定部７２は、例えば、候補鍵記憶部６０ａに記憶されている各候補鍵と対応する入力値の組の集合に対して、公知のクラスタリング手法を用いてクラスタリングを実行し、最も大きい部分集合を、無相関性（無相関性の条件）を満たさない原因となる部分集合として抽出する。無相関性原因推定部７２は、判定部５０ａの指示に基づいて、推定した原因の部分集合を判定部５０ａに出力する。
【００７７】
検定部２ａは、鍵生成部２０によって生成された候補鍵が、導出鍵として統計的な偏りがあるか否かを検定し、検定結果に応じて、候補鍵を導出鍵として出力する検定器である。検定部２ａは、算出部４０と、判定部５０ａとを備えている。
【００７８】
判定部５０ａは、鍵生成部２０が生成した候補鍵（第１の候補鍵データ）と、対応する入力値（固有情報及びソルトの値）とを関連付けて、候補鍵記憶部６０ａに記憶させる。
また、判定部５０ａは、算出部４０によって算出された算出結果に基づいて、生成された候補鍵を含めた導出鍵の集合が統計的な偏りが生じるか否かとして判定する判定処理する。すなわち、判定部５０ａは、候補鍵記憶部６０ａが記憶する候補鍵（第１の候補鍵データ）の集合を導出鍵の集合として第１の実施形態と同様の判定処理を実行する。
【００７９】
判定部５０ａは、統計的な偏りが生じていないと判定した場合に、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の数が所定の数（出力する閾値）に達したか否かを判定する。すなわち、判定部５０ａは、統計的な偏りが生じていないと判定した場合に、情報記憶部３０ａに記憶されている候補鍵を出力する閾値（例えば、Ｎ個）及び生成した候補鍵の数（例えば、ｎ個）を読み出して、生成した候補鍵の数が出力する閾値に達したか（Ｎ個≦ｎ個か）否かを判定する。判定部５０ａは、候補鍵の数が所定の数（出力する閾値）に達したと判定した場合に、候補鍵（Ｎ個の候補鍵）を導出鍵として出力する。
また、判定部５０ａは、候補鍵の数が所定の数（出力する閾値）に達していないと判定した場合に、鍵生成部２０に次の固有情報により候補鍵を生成させて、候補鍵の数が所定の数（出力する閾値）に達するまで、同様の判定処理を繰り返し実行させる。
【００８０】
また、判定部５０ａは、統計的な偏りが生じると判定した場合に、原因推定部７０によって推定された原因となる部分集合に含まれる候補鍵を、鍵生成部２０に擬似乱数（ソルト値）を変更して再生成させた再生成候補鍵（第２の候補鍵データ）に置き換えて第１の候補鍵データとして、候補鍵記憶部６０ａに記憶させる。ここで、再生成候補鍵（第２の候補鍵データ）の固有情報は、置き換えられる候補鍵（第１の候補鍵データ）の固有情報と同一であり、生成する際のソルト値（擬似乱数の値）が異なる。
また、判定部５０ａは、統計的な偏りが生じると判定した場合に、原因推定部７０によって推定された部分集合に含まれる候補鍵を、再生成候補鍵（第２の候補鍵データ）に置き換えて上述の判定処理を再実行する。そして、判定部５０ａは、再実行した判定処理において、第２の候補鍵データに置き換え後の統計的な偏りが置き換え前の統計的な偏りより小さい場合には、再生成候補鍵（第２の候補鍵データ）を第１の候補鍵データとして、候補鍵記憶部６０ａに記憶させる。一方、判定部５０ａは、再実行した判定処理において、第２の候補鍵データに置き換え後の統計的な偏りが置き換え前の統計的な偏りより大きい場合に、置き換え前の候補鍵を再生成候補鍵に代えて、第１の候補鍵データとして、候補鍵記憶部６０ａに再び記憶させる。
また、判定部５０ａは、一様性判定部５１、無相関性判定部５２、及び再生成判定部５３ａを備えている。
【００８１】
再生成判定部５３ａは、一様性判定部５１及び無相関性判定部５２の判定結果に基づいて統計的な偏りが生じていないと判定した場合に、情報記憶部３０ａに記憶されている情報を更新する。そして、再生成判定部５３ａは、情報記憶部３０ａに記憶されている候補鍵を出力する閾値（例えば、Ｎ個）及び生成した候補鍵の数（例えば、ｎ個）を読み出して、生成した候補鍵の数が出力する閾値に達したか（Ｎ個≦ｎ個か）否かを判定する。再生成判定部５３ａは、候補鍵の数が所定の数（出力する閾値）に達したと判定した場合に、候補鍵（Ｎ個の候補鍵）を導出鍵として出力する。また、再生成判定部５３ａは、候補鍵の数が所定の数（出力する閾値）に達していないと判定した場合に、次の固有情報による候補鍵を鍵生成部２０に生成させて、候補鍵の数が所定の数（出力する閾値）に達するまで、同様の判定処理を繰り返し実行させる。
また、再生成判定部５３ａは、候補鍵を導出鍵として出力する場合に、候補鍵記憶部６０ａに記憶されている候補鍵を消去（クリア）する。
【００８２】
また、再生成判定部５３ａは、統計的な偏りが生じると判定した場合に、原因推定部７０によって推定された部分集合に含まれる候補鍵を、再生成候補鍵（第２の候補鍵データ）に置き換えて上述の判定処理を再実行する。そして、再生成判定部５３ａは、再実行した判定処理において、第２の候補鍵データに置き換え後の統計的な偏りが置き換え前の統計的な偏りより大きい場合に、置き換え前の候補鍵を再生成候補鍵に代えて、第１の候補鍵データとして、候補鍵記憶部６０ａに再び記憶させる。この場合、再生成判定部５３ａは、例えば、カイ２乗値と相関係数の絶対値との積の値の比較により、置き換え前後の統計的な偏り判定してもよい。また、部分集合が一様性（一様性の条件）を満たさない原因による部分集合である場合には、再生成判定部５３ａは、カイ２乗値の比較により置き換え前後の統計的な偏り判定してもよいし、部分集合が無相関性（無相関性の条件）を満たさない原因による部分集合である場合には、再生成判定部５３ａは、相関係数の比較により置き換え前後の統計的な偏り判定してもよい。
【００８３】
次に、候補鍵記憶部６０ａが記憶する上述した候補鍵情報のデータ構成について説明する。
図１０は、本実施形態における候補鍵情報のデータ構成を示す図である。
図１０に示すように、候補鍵情報には、候補鍵を識別するＩＤ（候補鍵番号など）と、入力値である固有情報及びソルトの値と、対応する候補鍵（第１の候補鍵データ）とが含まれている。候補鍵記憶部６０ａは、候補鍵を識別するＩＤ（候補鍵番号など）と、入力値である固有情報及びソルトの値と、対応する候補鍵（第１の候補鍵データ）とは、関連付けて記憶する。
なお、候補鍵記憶部６０ａには、鍵生成部２０によって生成された固有情報の異なる複数の候補鍵が記憶されている。図１０に示される一例では、候補鍵記憶部６０ａには、ｎ個の候補鍵（ＫＥＹ１〜ＫＥＹｎ）と、対応する固有情報（Ｐ１〜Ｐｎ）及びソルト値（ＳＬＴ１〜ＳＬＴｎ）とが関連付けられて記憶されている。
【００８４】
次に、本実施形態における鍵データ生成装置１ａの動作について説明する。
図１１及び図１２は、本実施形態における鍵データ生成装置１ａの動作の一例を示すフローチャートである。
図１１及び図１２において、まず、鍵データ生成装置１ａは、ソルト値（仮ソルト）を生成する（ステップＳ２０１）。すなわち、擬似乱数生成部１０は、擬似乱数を仮ソルトとして生成し、生成した仮ソルトを鍵生成部２０に出力する。
なお、本実施形態におけるステップＳ２０１〜ステップＳ２０６までの処理は、第１の実施形態におけるステップＳ１０１〜ステップＳ１０６までの処理に対応する。
【００８５】
次に、鍵生成部２０は、仮ソルトと、鍵データ生成装置１ａの外部から入力された固有情報（例えば、パスワード）とを連結し、鍵導出関数により候補鍵を生成する（ステップＳ２０２）。鍵生成部２０は、生成した入力値と候補鍵とを算出部４０に出力する。
【００８６】
次に、算出部４０は、一様性検定情報を算出する（ステップＳ２０３）。すなわち、算出部４０の一様性算出部４１は、上述したように情報記憶部３０ａが記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報（一様性検定情報）として、カイ２乗値を算出する。算出部４０は、算出したカイ２乗値を判定部５０ａに出力する。
【００８７】
次に、判定部５０ａは、一様性を満たすか否かを判定する（ステップＳ２０４）。すなわち、判定部５０ａ（一様性判定部５１）は、算出部４０（一様性算出部４１）によって算出されたカイ２乗値に基づいて、生成された候補鍵を含めた導出鍵の集合が一様性を満たすか否かを、上述した統計的な偏りが生じるか否かとして判定する。
判定部５０ａは、一様性を満たすと判定した場合（ステップＳ２０４：ＹＥＳ）に、処理をステップＳ２０５に進め、一様性を満たさないと判定した場合（ステップＳ２０４：ＮＯ）に、処理をステップＳ２０９に進める。
【００８８】
次に、ステップＳ２０５において、算出部４０は、無相関性検定情報を算出する（ステップＳ２０５）。すなわち、算出部４０の相関係数算出部４２は、上述したように情報記憶部３０ａが記憶する統計情報と、鍵生成部２０によって生成された候補鍵とに基づいて、導出鍵の統計的な偏りを検定する検定情報（無相関性検定情報）として、相関係数（ｒ）を算出する。算出部４０は、算出した相関係数（ｒ）を判定部５０ａに出力する。
【００８９】
次に、判定部５０ａは、無相関性を満たすか否かを判定する（ステップＳ２０６）。すなわち、判定部５０ａ（無相関性判定部５２）は、算出部４０（相関係数算出部４２）によって算出された相関係数に基づいて、生成された候補鍵を含めた導出鍵の集合が無相関性を満たすか否かを、上述した統計的な偏りが生じるか否かとして判定する。
判定部５０ａは、無相関性を満たすと判定した場合（ステップＳ２０６：ＹＥＳ）に、処理をステップＳ２０７に進め、無相関性を満たさないと判定した場合（ステップＳ２０６：ＮＯ）に、処理をステップＳ２０９に進める。
【００９０】
次に、ステップＳ２０７において、判定部５０ａ（再生成判定部５３ａ）は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の数が所定の数（出力する閾値）に達したか否かを判定する。判定部５０ａ（再生成判定部５３ａ）は、候補鍵（第１の候補鍵データ）の数が所定の数（出力する閾値）に達したと判定した場合（ステップＳ２０７：ＹＥＳ）に、処理をステップＳ２０８に進める。また、判定部５０ａ（再生成判定部５３ａ）は、候補鍵（第１の候補鍵データ）の数が所定の数（出力する閾値）に達していないと判定した場合（ステップＳ２０７：ＮＯ）に、処理をステップＳ２０１に戻し、次の固有情報による候補鍵を鍵生成部２０に生成させて、候補鍵の数が所定の数（出力する閾値）に達するまで、同様の判定処理を繰り返し実行させる。
【００９１】
次に、ステップＳ２０８において、判定部５０ａ（再生成判定部５３ａ）は、候補鍵（Ｎ個の候補鍵）を導出鍵として出力する。なお、判定部５０ａ（再生成判定部５３ａ）は、候補鍵を導出鍵として出力する場合に、候補鍵記憶部６０ａに記憶されている候補鍵を消去（クリア）して、導出鍵生成処理を終了させる。
【００９２】
一方、ステップＳ２０９において、原因推定部７０は、統計的な偏りが生じる原因となる候補鍵を推定する。具体的に、原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因として推定される部分集合を、候補鍵記憶部６０ａに記憶されている候補鍵の情報に基づいて推定する。例えば、原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因（一様性を満たさない原因）として推定される部分集合を、各候補鍵の値の差分に基づいて推定する。ここで、各候補鍵の値の差分は、ハミング距離等の公知の定義に基づいて算出されてもよい。
図１３は、本実施形態における一様性を満たさない原因推定の一例を示す図である。
図１３において、候補鍵（鍵Ａ〜鍵Ｄ）うちの２つ候補鍵の組み合わせにおいて、最も近い組み合わせ（例えば、２つの候補鍵の組ＰＡ１）を、一様性を満たさない原因となる部分集合として抽出する。
【００９３】
また、例えば、原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因（無相関性を満たさない原因）として推定される部分集合を、クラスタリングに基づいて推定する。
図１４は、本実施形態における無相関性を満たさない原因推定の一例を示す図である。
図１４において、候補鍵（鍵Ａ〜鍵Ｅ）にクラスタリングを実行し、最も大きい部分集合（部分集合ＣＬ１）を、無相関性を満たさない原因となる部分集合として抽出する。ここで、最も大きい部分集合とは、例えば、クラスタリングにより生成された部分集合のうち、最も候補鍵の数が多い部分集合のことである。なお、同程度の規模の部分集合が複数ある場合には、原因推定部７０は、部分集合ごとの相関係数を算出部４０（相関係数算出部４２）に算出させて、最も相関係数の大きい部分集合を、無相関性を満たさない原因となる部分集合として抽出してもよい。
【００９４】
次に、図１２に示すように、鍵データ生成装置１ａは、候補鍵を再生成する（ステップＳ２１０）。すなわち、判定部５０ａ（再生成判定部５３ａ）は、同一の固有情報においてソルト値を変更して、ステップＳ２０１及びステップＳ２０２の処理を、擬似乱数生成部１０及び鍵生成部２０に実行させる。
なお、原因となる部分集合が一様性を満たさない原因による部分集合である場合に、判定部５０ａ（再生成判定部５３ａ）は、例えば、原因推定部７０によって抽出された組み合わせにおける２つの候補鍵のうちのいずれか一方について、候補鍵を再生成させる。
また、原因となる部分集合が無相関性を満たさない原因による部分集合である場合に、判定部５０ａ（再生成判定部５３ａ）は、原因推定部７０によって抽出された部分集合のうちの全てについて、候補鍵を再生成させる。
【００９５】
次に、算出部４０（一様性算出部４１）は、原因となる候補鍵と再生成した候補鍵（再生成候補鍵）とを置き換えて、一様性検定情報（カイ２乗値）を算出する（ステップＳ２１１）。
【００９６】
次に、判定部５０ａは、一様性を満たすか否かを判定する（ステップＳ２１２）。すなわち、判定部５０ａ（一様性判定部５１）は、算出部４０（一様性算出部４１）によって算出されたカイ２乗値に基づいて、置き換えた候補鍵を含めた導出鍵の集合が一様性を満たすか否かを、上述した統計的な偏りが生じるか否かとして判定する。
判定部５０ａは、一様性を満たすと判定した場合（ステップＳ２１２：ＹＥＳ）に、処理をステップＳ２１３に進め、一様性を満たさないと判定した場合（ステップＳ２１２：ＮＯ）に、処理をステップＳ２１５に進める。
【００９７】
次に、ステップＳ２１３において、算出部４０（相関係数算出部４２）は、原因となる候補鍵と再生成した候補鍵（再生成候補鍵）とを置き換えて、無相関性検定情報（相関係数）を算出する。
【００９８】
次に、判定部５０ａは、無相関性を満たすか否かを判定する（ステップＳ２１４）。すなわち、判定部５０ａ（無相関性判定部５２）は、算出部４０（相関係数算出部４２）によって算出された相関係数に基づいて、置き換えた候補鍵を含めた導出鍵の集合が無相関性を満たすか否かを、上述した統計的な偏りが生じるか否かとして判定する。
判定部５０ａは、無相関性を満たすと判定した場合（ステップＳ２１４：ＹＥＳ）に、処理をステップＳ２０７（図１１）に進め、無相関性を満たさないと判定した場合（ステップＳ２１４：ＮＯ）に、処理をステップＳ２１５に進める。
【００９９】
また、ステップＳ２１５において、判定部５０ａは、統計的な偏りを判定する検定結果が良くなっているか（改善されているか）否かを判定する。すなわち、判定部５０ａ（再生成判定部５３ａ）は、候補鍵の置き換え前後の検定値（カイ２乗値、又は相関係数の値）を比較して、候補鍵の置き換えにより統計的な偏りが改善されたか否かを判定する。判定部５０ａ（再生成判定部５３ａ）は、候補鍵の置き換えにより統計的な偏りが改善された場合（ステップＳ２１５：ＹＥＳ）に、処理をステップＳ２１７に進める。また、判定部５０ａ（再生成判定部５３ａ）は、候補鍵の置き換えにより統計的な偏りが改善されていない場合（ステップＳ２１５：ＮＯ）に、処理をステップＳ２１６に進める。
【０１００】
次に、ステップＳ２１６において、判定部５０ａ（再生成判定部５３ａ）は、再生成した候補鍵（再生成候補鍵）の置き換えを元の候補鍵に戻し、処理をステップＳ２１６に進める。
【０１０１】
次に、ステップＳ２１７において、原因推定部７０は、次の原因となる候補鍵を推定する。すなわち、判定部５０ａ（再生成判定部５３ａ）は、原因推定部７０に次の原因となる候補鍵を推定させる。このステップＳ２１７の処理は、ステップＳ２０９の処理と同様である。判定部５０ａ（再生成判定部５３ａ）は、原因推定部７０に次の原因となる候補鍵を推定させた後に、処理をステップＳ２１０に進める。これにより、判定部５０ａは、統計的に偏りのない候補鍵の集合が生成されるまで、原因となる候補鍵の推定及び置き換えと判定処理とを繰り返し実行する。
【０１０２】
以上説明したように、本実施形態における鍵データ生成装置１ａは、判定部５０ａと、候補鍵記憶部６０ａと、原因推定部７０とを備えている。候補鍵記憶部６０ａは、鍵生成部２０が生成した候補鍵を第１の候補鍵データとして、対応する入力情報と関連付けて記憶する。原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵（第１の候補鍵データ）の集合のうちの統計的な偏りが生じる原因として推定される部分集合を、各候補鍵の差分に基づいて推定する。また、判定部５０ａは、候補鍵の集合を導出鍵の集合として判定処理を実行する。判定部５０ａは、候補鍵の集合に統計的な偏りが生じると判定した場合に、原因推定部７０によって推定された部分集合に含まれる候補鍵を、鍵生成部２０に擬似乱数を変更して再生成させた再生成候補鍵（第２の候補鍵データ）に置き換えて第１の候補鍵データとして、候補鍵記憶部６０ａに記憶させる。判定部５０ａは、候補鍵記憶部６０ａに記憶されている候補鍵の数が所定の数に達した場合に、所定の数の候補鍵を導出鍵として出力する。
【０１０３】
これにより、本実施形態における鍵データ生成装置１ａは、一様性（一様性の条件）を満たした統計的な偏りのない導出鍵を生成することができるので、攻撃者に導出鍵の推定をされる可能性を低減することができる。したがって、本実施形態における鍵データ生成装置１ａは、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
また、本実施形態における鍵データ生成装置１ａは、過去に出力した導出鍵に統計的な偏りの原因がある場合であっても、一様性（一様性の条件）を満たした統計的な偏りのない導出鍵を生成することができる。すなわち、本実施形態における鍵データ生成装置１ａは、例えば、過去に出力した導出鍵の集合に統計的な偏りがあり、十分な数の導出鍵が生成されていなかった等により、この統計的な偏りが見つかられなかった場合であっても、安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができる。
【０１０４】
また、本実施形態では、原因推定部７０は、候補鍵記憶部６０ａに記憶されている候補鍵の集合のうちの統計的な偏りが生じる原因として推定される部分集合を、クラスタリングに基づいて推定する。
これにより、本実施形態における鍵データ生成装置１ａは、無相関性を満たした統計的な偏りのない導出鍵を生成することができるので、攻撃者に導出鍵の推定をされる可能性を低減することができる。また、本実施形態における鍵データ生成装置１ａは、過去に出力した導出鍵に統計的な偏りの原因がある場合であっても、無相関性を満たした統計的な偏りのない導出鍵を生成することができる。
【０１０５】
また、本実施形態では、判定部５０ａは、統計的な偏りが生じると判定した場合に、原因推定部７０によって推定された部分集合に含まれる候補鍵を、再生成候補鍵に置き換えて上述した判定処理を再実行する。判定部５０ａは、再実行した判定処理において、再生成候補鍵に置き換え後の統計的な偏りが置き換え前の統計的な偏りより大きい場合に、置き換え前の候補鍵を再生成候補鍵に代えて第１の候補鍵データとして、候補鍵記憶部６０ａに再び記憶させる。
これにより、本実施形態における鍵データ生成装置１ａは、統計的な偏りが低減するように、適切に導出鍵（鍵データ）を生成することができる。
【０１０６】
なお、本実施形態では、統計的な偏りが生じる原因となる部分集合をクラスタリングに基づいて推定した場合に、原因となる部分集合に含まれる全ての候補鍵を再生成させて判定処理を実行する形態を説明したが、原因となる部分集合のうちの１つの候補鍵を再生成させて判定処理を実行する形態でもよい。この場合、クラスタリングによる部分集合に含まれる候補鍵の数が変化するので、原因推定部７０は、再生成候補鍵を含む部分集合とは異なる部分集合を、原因となる部分集合として、次回に推定してもよい。
【０１０７】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の各実施形態において、候補鍵を再生成する場合にソルト値を変更する形態を説明したが、これに限定されるものではない。例えば、鍵導出関数を繰り返し実行して候補鍵を生成する場合には、この繰り返し回数を変更して候補鍵を再生成する形態でもよい。
【０１０８】
また、上記の各実施形態において、一様性を満たすか否かの検定方法として、カイ２乗検定を用いる形態を説明したが、これに限定されるものではなく、他の検定方法を用いる形態でもよい。この場合、検定方法は、パラメトリックな方法でもよいし、ノンパラメトリックな方法でもよい。
【０１０９】
また、上記の各実施形態において、判定部５０（５０ａ）は、一様性を満たすか否かを判定した後に無相関性を満たすか否かを判定する形態を説明したが、無相関性を満たすか否かを判定した後に一様性を満たすか否かを判定する形態でもよい。
【０１１０】
また、上記の第１の実施形態において、判定部５０は、統計的な偏りが最も小さい候補鍵を、カイ２乗値と相関係数との積の値に基づいて判定する形態を説明したが、これに限定されるものではない。例えば、判定部５０は、一様性と無相関性とに優先順位（又は重み付け）をつけて、統計的な偏りが最も小さい候補鍵を判定する形態であってもよいし、一様性と無相関性とのいずれか一方により、統計的な偏りが最も小さい候補鍵を判定する形態であってもよい。
【０１１１】
また、上記の第１の実施形態において、候補鍵記憶部６０は、統計的な偏りが最も小さい候補鍵の情報を記憶する形態を説明したが、再生成した全ての候補鍵の情報を記憶する形態でもよい。この場合、判定部５０は、繰り返し回数が所定の回数に達した後で、候補鍵記憶部６０に記憶されている全ての候補鍵のうちから統計的な偏りが最も小さい候補鍵を判定する。
【０１１２】
また、上記の各実施形態は、それぞれ単独に実施される形態でもよいし、上記の各実施形態を組み合わせて実施される形態でもよい。
例えば、上記の第１の実施形態において、候補鍵がウイーク鍵（弱鍵）である場合に、鍵生成部２０が候補鍵から除外する形態を説明したが、判定部５０が候補鍵から除外する形態でもよい。
また、上記の第２の実施形態において、第１の実施形態と同様に、候補鍵がウイーク鍵（弱鍵）である場合に、候補鍵から除外する処理を鍵生成部２０が行う形態でもよい。
【０１１３】
また、上記の第２の実施形態において、原因となる候補鍵の推定及び置き換えと判定処理とを、統計的に偏りのない候補鍵の集合が生成されるまで繰り返し実行する形態を説明したが、第１の実施形態と同様に、繰り返し回数に制限を設ける形態でもよい。
【０１１４】
また、鍵データ生成装置１（１ａ）は、専用のハードウェアにより実現されるものであってもよく、また、メモリ及びマイクロプロセッサにより実現させるものであってもよい。この鍵データ生成装置１（１ａ）はメモリ及びＣＰＵ（中央情報処理装置）により構成され、鍵データ生成装置１（１ａ）の機能を実現するためのプログラムをメモリにロードして実行することによりその機能を実現させるものであってもよい。
【０１１５】
なお、鍵データ生成装置１（１ａ）は、ＩＣカードの発行装置、パーソナルコンピュータ、携帯電話などの情報処理装置に適用することができる。例えば、鍵データ生成装置１（１ａ）をＩＣカードの発行装置に適用した場合に、上述したように安全性が低下することを低減しつつ適切な導出鍵（鍵データ）を生成することができるので、ＩＣカードの発行装置は、安全性が低下することを低減しつつ適切にＩＣカードを発行することができる。これにより、ＩＣカードの発行装置は、発行されたＩＣカード、及び発行されたＩＣカードを用いたＩＣカードシステムの安全性を確保することができる。
【０１１６】
なお、鍵データ生成装置１（１ａ）の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより鍵データ生成装置１（１ａ）の各機能による処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【０１１７】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【符号の説明】
【０１１８】
１，１ａ  鍵データ生成装置
２，２ａ  検定部
１０  擬似乱数生成部
２０  鍵生成部
３０，３０ａ  情報記憶部
４０  算出部
４１  一様性算出部
４２  相関係数算出部
５０，５０ａ  判定部
５１  一様性判定部
５２  無相関性判定部
５３，５３ａ  再生成判定部
６０，６０ａ  候補鍵記憶部
７０  原因推定部
７１  一様性原因推定部
７２  無相関性原因推定部
【図１】
0005759932.tif 000004
【図２】
0005759932.tif 000005
【図３】
0005759932.tif 000006
【図４】
0005759932.tif 000007
【図５】
0005759932.tif 000008
【図６】
0005759932.tif 000009
【図７】
0005759932.tif 000010
【図８】
0005759932.tif 000011
【図９】
0005759932.tif 000012
【図１０】
0005759932.tif 000013
【図１１】
0005759932.tif 000014
【図１２】
0005759932.tif 000015
【図１３】
0005759932.tif 000016
【図１４】
0005759932.tif 000017