(57)【特許請求の範囲】
【請求項１】
辞書列を構成する辞書の順序を決定する辞書順序決定手段と、
入力された入力値に対して一方向関数を適用し、値を求める一方向関数適用手段と、
パスワードを生成するパスワード生成手段と、
を有し、
前記パスワード生成手段は、
前記一方向関数適用手段において求められた前記値を、パスワード要素の決定に用いられる辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する前記辞書の要素を用いてパスワード要素を決定するパスワード要素決定手段と、
前記パスワード要素決定手段がパスワードを構成する要素分のパスワード要素を決定したか否かを判定し、パスワードを構成する要素分のパスワード要素を決定していないと判定した場合、前記パスワード要素決定手段で用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記辞書順序決定手段で決定された前記辞書列を構成する辞書の順序に基づき前記パスワード要素決定手段で用いられた辞書の次の順序の辞書と、を用いて、前記パスワード要素決定手段で、次のパスワード要素を決定するよう制御するパスワード生成制御手段と、
を有することを特徴とするパスワード生成装置。
【請求項２】
辞書列を構成する辞書の順序を決定する辞書順序決定手段と、
入力された入力値に対して一方向関数を適用し、値を求める一方向関数適用手段と、
パスワードを生成するパスワード生成手段と、
を有し、
前記辞書順序決定手段は、
前記一方向関数適用手段において求められた前記値を、辞書列の大きさで割って余りを求め、求めた余りの数値に位置する辞書を前記辞書列から取り出し、取り出した辞書を新たな辞書列に追加する新辞書列生成手段と、
前記新辞書列生成手段が前記辞書列の辞書を全て前記新たな辞書列に追加したか否かを判定し、前記辞書列の辞書を全て前記新たな辞書列に追加していないと判定した場合、前記新辞書列生成手段で用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記取り出した辞書分、前記辞書列における辞書の並びを前に詰めた辞書列と、を用いて、前記新辞書列生成手段で、前記辞書列から辞書を取り出し、取り出した辞書を前記新たな辞書列に追加するよう制御し、前記新たな辞書列の並びを辞書の順序とする新辞書列生成制御手段と、
を有し、
前記パスワード生成手段は、
前記一方向関数適用手段において求められた前記値を、パスワード要素の決定に用いられる辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する前記辞書の要素を用いてパスワード要素を決定するパスワード要素決定手段と、
前記パスワード要素決定手段がパスワードを構成する要素分のパスワード要素を決定したか否かを判定し、パスワードを構成する要素分のパスワード要素を決定していないと判定した場合、前記パスワード要素決定手段で用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記辞書順序決定手段で決定された前記新たな辞書列を構成する辞書の順序に基づき前記パスワード要素決定手段で用いられた辞書の次の順序の辞書と、を用いて、前記パスワード要素決定手段で、次のパスワード要素を決定するよう制御するパスワード生成制御手段と、
を有することを特徴とするパスワード生成装置。
【請求項３】
辞書列を構成する辞書を決定する辞書決定手段を更に有し、
前記辞書順序決定手段は、前記辞書決定手段において決定された辞書列を構成する辞書の順序を決定することを特徴とする請求項１又は２に記載のパスワード生成装置。
【請求項４】
前記辞書決定手段は、
前記辞書列に含まれる辞書の種類と、数値と、を対応付ける対応付け手段と、
前記一方向関数適用手段において求められた前記値を、前記辞書列を構成する辞書の種類の数で割って余りを求め、求めた余りの数値に対応する種類の辞書を辞書列に追加する辞書追加手段と、
前記辞書追加手段がパスワードを構成するパスワード要素分の辞書を前記辞書列に追加したか否かを判定し、パスワードを構成するパスワード要素分の辞書を前記辞書列に追加していないと判定した場合、前記辞書追加手段で用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記辞書列を構成する辞書の種類の数と、を用いて、前記辞書追加手段で、余りを求め、求めた余りの数値に対応する種類の辞書を辞書列に追加するよう制御する辞書追加制御手段と、
を有することを特徴とする請求項３に記載のパスワード生成装置。
【請求項５】
前記パスワード生成制御手段が生成したパスワードを表示する表示制御手段を更に有することを特徴とする請求項１乃至４の何れか１項に記載のパスワード生成装置。
【請求項６】
入力された入力値に対して一方向関数を適用し、値を求める一方向関数適用手段を有するパスワード生成装置におけるパスワード生成方法であって、
辞書列を構成する辞書の順序を決定する辞書順序決定ステップと、
前記一方向関数適用手段において求められた前記値を、パスワード要素の決定に用いられる辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する前記辞書の要素を用いてパスワード要素を決定するパスワード要素決定ステップと、
前記パスワード要素決定ステップにおいてパスワードを構成する要素分のパスワード要素を決定したか否かを判定し、パスワードを構成する要素分のパスワード要素を決定していないと判定した場合、前記パスワード要素決定ステップで用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記辞書順序決定ステップで決定された前記辞書列を構成する辞書の順序に基づき前記パスワード要素決定ステップで用いられた辞書の次の順序の辞書と、を用いて、前記パスワード要素決定ステップの処理を再び実行し、次のパスワード要素を決定するよう制御するパスワード生成制御ステップと、
を含むことを特徴とするパスワード生成方法。
【請求項７】
コンピュータを、
辞書列を構成する辞書の順序を決定する辞書順序決定手段と、
入力された入力値に対して一方向関数を適用し、値を求める一方向関数適用手段と、
パスワードを生成するパスワード生成手段と、
して機能させ、
前記パスワード生成手段は、
前記一方向関数適用手段において求められた前記値を、パスワード要素の決定に用いられる辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する前記辞書の要素を用いてパスワード要素を決定するパスワード要素決定手段と、
前記パスワード要素決定手段がパスワードを構成する要素分のパスワード要素を決定したか否かを判定し、パスワードを構成する要素分のパスワード要素を決定していないと判定した場合、前記パスワード要素決定手段で用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記辞書順序決定手段で決定された前記辞書列を構成する辞書の順序に基づき前記パスワード要素決定手段で用いられた辞書の次の順序の辞書と、を用いて、前記パスワード要素決定手段で、次のパスワード要素を決定するよう制御するパスワード生成制御手段と、
を有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パスワード生成装置、パスワード生成方法及びプログラムに関する。
【背景技術】
【０００２】
簡単な入力方法で認証用の特徴を含む元データを入力し、入力された元データの特徴を損なうことなくデータ処理をしてパスワードを生成する装置がある（特許文献１参照）。
【０００３】
また、パスワードを用いた認証においてセキュリティを高めるためには、
（１）文字、数字、記号等の多様なパスワード要素を均等に配置したパスワードにする
（２）パスワードを長くする
必要があった。
【０００４】
【特許文献１】特開平１１−６６００５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術は、特許文献１の段落番号００２１に記載されているように、ｍビット列の数値の最大値が辞書テーブルのサイズと等しくなるようにｍを設定する必要があった。つまり、巨大な用語辞書テーブルを用意しなくてはならなかった。しかしながら、用語辞書の構成要素は限られるため、非常に冗長な用語辞書テーブルとなり、生成されるパスワードに用語辞書の構成要素に係る偏りが生じ、パスワードに関する安全性上、問題があった。
【０００６】
更に、特許文献１の技術は、
ｍ≧（パスワードパラメータ）／（既存の認証システムのパスワードの文字数）
を満たす必要があった。
（パスワードパラメータ）／（既存の認証システムのパスワードの文字数）
が必ず割り切れるとは限らず、この場合、構成要素が「（パスワードパラメータ）／（既存の認証システムのパスワードの文字数）」よりも大きな辞書を使用する必要があった。そのため、辞書の構成要素において絶対に使用しない構成要素が出てくるので、生成されるパスワードに用語辞書の構成要素に係る偏りが生じ、パスワードに関する安全性に問題があった。
【０００７】
また、上述した従来技術の（１）及び（２）を満たすことと、覚えやすいパスワードとは相反し、両立することができない問題があった。
【０００８】
本発明はこのような問題点に鑑みなされたもので、覚えやすい入力値に対して、安全性の高いパスワードを生成することを目的とする。
【課題を解決するための手段】
【０００９】
そこで、本発明のパスワード生成装置は、辞書列を構成する辞書の順序を決定する辞書順序決定手段と、入力された入力値に対して一方向関数を適用し、値を求める一方向関数適用手段と、パスワードを生成するパスワード生成手段と、を有し、前記パスワード生成手段は、前記一方向関数適用手段において求められた前記値を、パスワード要素の決定に用いられる辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する前記辞書の要素を用いてパスワード要素を決定するパスワード要素決定手段と、前記パスワード要素決定手段がパスワードを構成する要素分のパスワード要素を決定したか否かを判定し、パスワードを構成する要素分のパスワード要素を決定していないと判定した場合、前記パスワード要素決定手段で用いた前記値を入力値として前記一方向関数適用手段に入力し、得られた値と、前記辞書順序決定手段で決定された前記辞書列を構成する辞書の順序に基づき前記パスワード要素決定手段で用いられた辞書の次の順序の辞書と、を用いて、前記パスワード要素決定手段で、次のパスワード要素を決定するよう制御するパスワード生成制御手段と、を有することを特徴とする。
【００１０】
係る構成とすることにより、例えば、入力値に対して一方向関数を適用し、値を求め、求めた値を、辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する辞書の要素を用いてパスワード要素を決定し、次のパスワード要素を決定するに際し、前記値を入力値として、前記入力値に対して一方向関数を適用し、値を求め、求めた値を、辞書を構成する要素の数で割って余りを求め、求めた余りの数値に対応する辞書の要素を用いてパスワード要素を決定する。このような処理を繰り返すことによって、辞書の構成要素に係る偏りが生じないパスワードを生成するので、覚えやすい入力値に対して、安全性の高いパスワードを生成することができる。
【００１１】
ここで、一方向関数とは、例えば後述するハッシュ関数等に対応する。また、一方向関数を適用し求める値とは、例えば後述するハッシュ値等に対応する。
【００１２】
また、本発明は、パスワード生成方法及びプログラムとしてもよい。
【発明の効果】
【００１３】
本発明によれば、覚えやすい入力値に対して、安全性の高いパスワードを生成することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態について図面に基づいて説明する。
【００１５】
＜実施形態１＞
図１は、パスワード生成装置（コンピュータ）のハードウェア構成の一例を示す図である。図１に示されるようにパスワード生成装置１は、ハードウェア構成として、ＣＰＵ１１を含む。
ＣＰＵ１１が、記憶装置１３に記憶されている、プログラムに基づき処理を行うことによって、後述する機能、又はフローチャートを実現する。
【００１６】
また、ＣＰＵ１１には、バス１０を介して、入力装置１２、記憶装置１３及び表示装置１４が接続されている。記憶装置１３は、例えば、ＲＯＭ、ＲＡＭ、ハードディスク装置等からなり、上述した各プログラム以外に、プログラムに基づく処理で用いられるデータ（例えば後述する辞書等）を記憶する。表示装置１４は、情報を表示する例えばディスプレイ等である。入力装置１２は、情報を入力する例えば操作キー等である。
なお、パスワード生成装置１のより具体的な一例としては、スマートカードや、セキュリティハードウェアトークン等である。
【００１７】
図２は、パスワード生成装置の機能構成の一例を示す図である。図２に示されるように、パスワード生成装置１は、機能構成として、表示制御部２１と、パスフレーズ取得部２２と、ハッシュ関数適用部２３と、辞書列決定部２４と、辞書順序決定部２５と、パスワード生成部２６と、を含む。
【００１８】
表示制御部２１は、画面等の表示装置１４への表示を制御する。例えば、画面の例としては、パスフレーズの入力に係るパスフレーズ入力画面や、生成されたパスワードの表示に係るパスワード表示画面等である。パスフレーズ取得部２２は、パスフレーズ入力画面等を介して入力されたパスフレーズを取得する。
【００１９】
ハッシュ関数適用部２３は、入力値に対してハッシュ関数を適用してハッシュ値を得る。ここで、入力値としては、パスフレーズ取得部２２が取得したパスフレーズ、又はハッシュ値等がある。
【００２０】
辞書列決定部２４は、生成するパスワードの要素分（パスワード要素分）の辞書列を決定する。なお、本実施形態では、辞書の種類として、アルファベットの小文字（以下、単に小文字という）、アルファベットの大文字（以下、単に大文字という）、数字、の３種類を例に説明を行う。辞書列決定部２４の詳細は、後述する図３に示す。
なお、ここで、パスワードの要素とは、パスワードを構成する要素のことをいう。例えば、パスワードが「Ｃ３ｇＭ１４ｔＴ」の場合、「Ｃ」や、「３」、「ｇ」、「Ｍ」、「１」、「４」、「ｔ」、「Ｔ」がパスワードの要素である。また、辞書列とは、上述のような多様な辞書の種類を要素とした行列である。
【００２１】
辞書順序決定部２５は、辞書決定部２４で決定された辞書列の辞書の順序（並び）を決定する。辞書順序決定部２５の詳細は、後述する図４に示す。
パスワード生成部２６は、辞書順序決定部２５で決定された辞書の順序の辞書列を用いてパスワードを生成する。パスワード生成部２６の詳細は、後述する図６に示す。
【００２２】
図３は、辞書列決定部の構成の一例を示す図である。
辞書列決定部２４は、辞書・数値対応付け部３１と、辞書追加部３２と、辞書追加制御部３３と、を含む。
【００２３】
辞書・数値対応付け部３１は、辞書の種類と、数値と、を対応付ける。
辞書・数値対応付け部３１は、例えば、
小文字：０
大文字：１
数字：２
等と、辞書の種類と、数値と、を対応付ける。
なお、本実施形態では、辞書・数値対応付け部３１が、辞書の種類と、数値と、を対応付けるよう説明を行う。しかしながら、予め、辞書の種類と、数値と、を対応付けてプログラミングしてパスワード生成装置１にアプリケーション等を実装してもよいし、予め、辞書の種類と、数値と、を対応付けたファイル等を記憶装置１３等に記憶させておき、辞書追加部３２は、このファイルを参照するようにしてもよい。
【００２４】
辞書追加部３２は、例えば対象としている認証システム等で必要とされる辞書を辞書列に用意（追加）すると共に、ハッシュ値を辞書の種類の数（本実施形態の例では３）で割り、余りの数値に対応する種類の辞書を辞書列に追加する。
辞書追加部３２は、例えば、対象としている認証システム等で必要とされる辞書が小文字、大文字、数字の場合、辞書列に
辞書列：「小文字、大文字、数字」
を用意する。
そして、辞書追加部３２は、ハッシュ値を辞書の種類の数（本実施形態の例では３）で割り、余りの数値が例えば２であった場合、以下に示すように数字の辞書を辞書列に追加する。
辞書列：「小文字、大文字、数字、数字」
なお、以下では、簡略化のため、辞書列において、小文字は「小」、大文字は「大」、数字は「数」と記載する。
【００２５】
ここで、辞書追加部３２が用意する辞書の情報は、例えば認証システム等より取得してもよいし、パスフレーズと同様、ユーザに入力させるようにしてもよい。また、本実施形態では、辞書追加部３２は、辞書を辞書列に用意（追加）するものとして説明を行うが、例えば認証システムやユーザ等が、必要とする辞書を指定しない場合、必ずしも辞書を辞書列に用意する必要は無い。つまり、辞書追加部３２は、ハッシュ値を辞書の種類の数（本実施形態の例では３）で割り、余りの数値に対応する種類の辞書を辞書列に追加していくだけでもよい。この場合、辞書の種類の数は、例えば、予めファイル等に記載しておいてもよいし、パスフレーズと同様、ユーザに入力させるようにしてもよい。
【００２６】
辞書追加制御部３３は、辞書追加部３２が用いた前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値を辞書追加部３２に入力して、上述したように辞書を辞書列に追加させるよう制御する処理を、辞書列がパスワード要素数分の辞書を持つまで繰り返すよう制御する。ここで、パスワードの要素数は、例えば、予めファイル等に記載しておいてもよいし、パスフレーズと同様、ユーザに入力させるようにしてもよい。
例えば、パスワードの要素数が８で、辞書列が「小文字、大文字、数字、数字」あった場合、辞書追加制御部３３は、後４回辞書を辞書列に追加するよう辞書追加部３２を制御し、辞書列を決定（又は生成）する。本実施形態では、例えば、辞書列は以下のようになったものとする。
辞書列：「小、大、数、数、大、大、数、小」
【００２７】
図４は、辞書順序決定部の構成の一例を示す図である。
図４に示されるように、辞書順序決定部２５は、新辞書列生成部４１と、新辞書列生成制御部４２と、を含む。
【００２８】
新辞書列生成部４１は、入力されたハッシュ値を、入力された辞書列の大きさで割り、余りの数値に位置する辞書を辞書列から取り出し、新しい辞書列に追加する。そして、新辞書列生成部４１は、元の辞書列の辞書の順序を、辞書を取り出した分、前に詰める。なお、新辞書列生成部４１は、まず辞書列決定部２４で用いられた前記ハッシュ値を入力値として例えば辞書列決定部２４より受け取る。
【００２９】
ここで、図５は、新辞書列生成部における処理の一例を説明するための図である。
ここで、辞書列決定部２４で決定された辞書列が上述したように、
辞書列：「小、大、数、数、大、大、数、小」
０、１、２、３、４、５、６、７
であるものとする。
新辞書列生成部４１は、例えば、入力されたハッシュ値を入力された辞書列の大きさ（前記辞書列の場合８）で割った余りが４の場合、４に位置する辞書（「大」）を辞書列から取り出し、新しい辞書列に追加する。そして、新辞書列生成部４１は、元の辞書列の辞書の順序を、辞書を取り出した分、前に詰める。
【００３０】
再び図４の説明に戻り、新辞書列生成制御部４２は、新辞書列生成部４１が用いた前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値を新辞書列生成部４１に入力すると共に、前記辞書の順序を前に詰めた元の辞書列を新辞書列生成部４１に入力し、上述したように新辞書列に辞書を追加させるよう制御する処理を、元の辞書列から辞書がなくなるまで繰り返すよう制御する。本実施形態では、例えば、新しい辞書列は以下のようになったものとする。
新しい辞書列：「大、数、小、大、数、数、小、大」
【００３１】
図６は、パスワード生成部の構成の一例を示す図である。
図６に示されるように、パスワード生成部２６は、辞書内容・数値対応付け部５１と、パスワード要素決定部５２と、パスワード生成制御部５３と、を含む。
【００３２】
辞書内容・数値対応付け部５１は、辞書の内容（辞書の要素）と、数値と、を対応付ける。例えば、大文字の辞書の場合、辞書内容・数値対応付け部５１は、
Ａと０、Ｂと１、Ｃと２、・・・、Ｚと２５
等と辞書の内容と、数値と、を対応付ける。また、小文字の辞書の場合も、辞書内容・数値対応付け部５１は、同様に辞書の内容と、数値と、を対応付ける。
なお、本実施形態では、辞書内容・数値対応付け部５１が、辞書の内容と、数値と、を対応付けるよう説明を行う。しかしながら、予め、辞書の内容と、数値と、を対応付けてプログラミングしてパスワード生成装置１にアプリケーション等を実装してもよいし、予め、辞書の内容と、数値と、を対応付けたファイル等を記憶装置１３等に記憶させておき、パスワード要素決定部５２は、このファイルを参照するようにしてもよい。
なお、辞書が数字の場合、辞書内容・数値対応付け部５１は、対応付けの処理を行わない。
【００３３】
パスワード要素決定部５２は、入力されたハッシュ値を、入力された辞書の大きさ（辞書を構成する要素の数）で割り、余りの数値に対応する文字をパスワードの要素として決定する。例えば入力された辞書が大文字の場合、パスワード要素決定部５２は、入力されたハッシュ値を、大文字の辞書の大きさ（２６）で割る。そして、例えば余りが２の場合、パスワード要素決定部５２は、余りの数値２に対応する文字Ｃをパスワードの要素として決定する。
【００３４】
パスワード生成制御部５３は、パスワード要素決定部５２が用いた前記ハッシュ値を入力値としてハッシュ関数提供部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値をパスワード要素決定部５２に入力すると共に、辞書順序決定部２５が決定した辞書の順序に基づいて、次の辞書をパスワード要素決定部５２に入力し、上述したようにパスワード要素を決定するよう制御する処理を、辞書列の辞書分繰り返すよう制御する。本実施形態では、例えばパスワードを以下のようになったものとする。
パスワード：「Ｃ３ｇＭ１４ｔＴ」
【００３５】
以下、フローチャートを用いて、パスワード生成処理の一例を説明する。
図７は、パスワード生成処理の一例を示すフローチャートである。
ステップＳ１０において、パスフレーズ取得部２２は、パスフレーズ入力画面等を介して入力されたパスフレーズを取得する。
【００３６】
ステップＳ１１において、ハッシュ関数適用部２３及び辞書列決定部２４は、パスワード要素分の辞書列を決定する。なお、ステップＳ１１の処理の詳細は、後述する図８に示す。
ステップＳ１２において、ハッシュ関数適用部２３及び辞書順序決定部２５は、ステップＳ１１で決定された辞書列の辞書の順序（並び）を決定する。なお、ステップＳ１２の処理の詳細は、後述する図９に示す。
【００３７】
ステップＳ１３において、ハッシュ関数適用部２３及びパスワード生成部２６は、ステップＳ１２で決定された辞書の順序の辞書列を用いてパスワードを生成する。なお、ステップＳ１３の処理の詳細は、後述する図１０に示す。
【００３８】
図８は、辞書列決定処理の一例を示すフローチャートである。
ステップＳ２０において、ハッシュ関数適用部２３は、ステップＳ１０でパスフレーズ取得部２２が取得したパスフレーズを入力値として受け取り、ハッシュ関数を適用し、ハッシュ値を得る。ハッシュ関数適用部２３は、得たハッシュ値を入力値としてハッシュ関数適用部２３に渡す。
【００３９】
ステップＳ２１において、辞書・数値対応付け部３１は、辞書の種類と、数値と、を対応付ける。
ステップＳ２２において、辞書追加部３２は、例えば対象としている認証システム等で必要とされる辞書を辞書列に用意（追加）する。
【００４０】
ステップＳ２３において、辞書追加部３２は、入力値として得たハッシュ値を辞書の種類の数で割り、余りの数値に対応する種類の辞書を辞書列に追加する。
【００４１】
ステップＳ２４において、辞書追加制御部３３は、パスワードを構成するパスワード要素分の辞書を持つ辞書列となったか否かを判定する。パスワードを構成するパスワード要素分の辞書を持つ辞書列となったと判定した場合、辞書追加制御部３３は、前記ハッシュ値を入力値として辞書順序決定部２５に与えると共に決定した辞書列を辞書順序決定部２５に与え、図８に示す処理を終了する。一方、パスワードを構成するパスワード要素分の辞書を持つ辞書列となっていないと判定した場合、辞書追加制御部３３は、ステップＳ２５に進む。なお、ここで、辞書追加制御部３３は、パスワードを構成するパスワード要素分の辞書を持つ辞書列となったと判定した場合、前記ハッシュ値を入力値として辞書順序決定部２５に与えるものとして説明を行ったが、前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値を入力値として辞書順序決定部２５に与えてもよい。
【００４２】
ステップＳ２５において、辞書追加制御部３３は、前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値を辞書追加部３２に入力し、ステップＳ２３に処理を進める。
【００４３】
すると、再び、ステップＳ２３において、辞書追加部３２は、入力値として得たハッシュ値を、辞書の種類の数で割り、余りの数値に対応する種類の辞書を辞書列に追加する処理を行う。
【００４４】
図９は、辞書順序決定処理の一例を示すフローチャートである。
ステップＳ３０において、新辞書列生成部４１は、入力値として受け取ったハッシュ値を、辞書列の大きさで割り、余りの数値に位置する辞書を取り出し、新しい辞書列に追加する。
【００４５】
ステップＳ３１において、新辞書列生成部４１は、元の辞書列（辞書を取り出した側の辞書列）の辞書の順序を、辞書を取り出した分、前に詰める。
ステップＳ３２において、新辞書列生成制御部４２は、元の辞書列から辞書を取り出し、新しい辞書列に追加し、全ての辞書順序（辞書の順序）を決定したか否か（つまり、パスワードを構成する要素分のパスワード要素を決定したか否か）を判定する。全ての辞書順序を決定したと判定した場合、新辞書列生成制御部４２は、前記ハッシュ値を入力値としてパスワード生成部２６に与えると共に生成した新たな辞書列の並びを辞書順序としてパスワード生成部２６に与え、図９に示す処理を終了する。一方、全ての辞書順序を決定していないと判定すると、ステップＳ３３に進む。なお、ここで、新辞書列生成制御部４２は、全ての辞書順序を決定したと判定した場合、前記ハッシュ値を入力値としてパスワード生成部２６に与えるものとして説明を行ったが、前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値を入力値としてパスワード生成部２６に与えてもよい。
【００４６】
ステップＳ３３において、新辞書列生成制御部４２は、前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値を新辞書列生成部４１に入力し、ステップＳ３０に処理を進める。
【００４７】
すると、再び、ステップＳ３０において、新辞書列生成部４１は、入力値として受け取ったハッシュ値を、元の辞書列（辞書を取り出した側の辞書列）の大きさで割り、余りの数値に位置する辞書を取り出し、新しい辞書列に追加する処理を行う。
【００４８】
図１０は、パスワード生成処理の一例を示すフローチャートである。
ステップＳ４０において、辞書内容・数値対応付け部５１は、辞書の内容と、数値と、を対応付ける。
【００４９】
ステップＳ４１において、パスワード要素決定部５２は、変数ｉを初期化する。例えば、辞書内容・数値対応付け部５１は、変数ｉに０を設定する。
ステップＳ４２において、パスワード要素決定部５２は、入力値として得たハッシュ値を、入力値として得た変数ｉが指し示す辞書列の順番の辞書の大きさで割り、余りの数値に対応付けられた文字（又は、辞書が数字の場合、余りの数値）をパスワード要素に決定する。
【００５０】
ステップＳ４３において、パスワード生成制御部５３は、前記辞書列の各辞書に対してステップＳ４２の処理を行ったか否か（つまり、必要なパスワード要素分の辞書を用いてパスワード要素を決定したか否か）を判定する。前記辞書列の各辞書に対してステップＳ４２の処理を行ったと判定した場合、パスワード生成制御部５３は、生成したパスワードを例えば表示制御部２１に渡し、図１０に示す処理を終了する。表示制御部２１は、パスワード生成制御部５３よりパスワードを受け取ると、受け取ったパスワードを含むパスワード表示画面等を生成し、表示装置１４に表示する。ユーザは、表示されたパスワードを目視し、この表示されたパスワードを用いて、認証システムに（又は認証システムを介して所望のシステムに）ログインする。
なお、本実施形態では、パスワード生成制御部５３は、生成したパスワードを表示制御部２１に渡し、表示制御部２１が受け取ったパスワードを含むパスワード表示画面等を表示装置１４に表示するよう説明を行う。しかしながら、パスワード生成制御部５３は、生成したパスワードを直接、認証システムに渡すようにしてもよい。このような構成とした場合、ユーザは、パスフレーズを入力するだけで、認証システムに（又は認証システムを介して所望のシステムに）ログインすることができる。
【００５１】
一方、前記辞書列の各辞書に対してステップＳ４２の処理を行っていないと判定した場合、パスワード生成制御部５３は、ステップＳ４４に処理を進める。
ステップＳ４４において、パスワード生成制御部５３は、前記ハッシュ値を入力値としてハッシュ関数適用部２３に与え、ハッシュ関数適用部２３が出力するハッシュ値を受け取り、受け取ったハッシュ値をパスワード要素決定部５２に入力し、ステップＳ４５に処理を進める。
【００５２】
ステップＳ４５において、パスワード要素決定部５２は、変数ｉの値を１つインクリメントし、ステップＳ４２に処理を進める。
すると、再び、ステップＳ４２において、パスワード要素決定部５２は、入力値として得たハッシュ値を、入力値として得た（前記インクリメントした）変数ｉが指し示す辞書列の順番の辞書の大きさで割り、余りの数値に対応付けられた文字（又は、辞書が数字の場合、余りの数値）をパスワード要素に決定する処理を行う。
【００５３】
以上、上述した実施形態によれば、パスフレーズ等の覚えやすい入力値に対して、例えば辞書の構成要素に係る偏りが生じない等の安全性の高いパスワードを生成することができる。
【００５４】
＜実施形態２＞
上述した実施形態１では、パスワード生成装置１は、例えば図７に示したように辞書列を決定した後、辞書順序を決定し、この決定した辞書順序を用いて、パスワードを生成するよう説明を行った。しかしながら、パスワード生成装置１は、辞書列を決定すると共に、辞書順序を決定するようにしてもよい。つまり、パスワード生成装置１は、図８のステップＳ２３で、入力値として得たハッシュ値を辞書の種類の数で割り、余りの数値に対応する種類の辞書を選択すると共に、この辞書の辞書列の順番も決定するようにしてもよい。例えば、パスワード生成装置１は、図９に示したように順番を決める。
【００５５】
同様に、パスワード生成装置１は、順番を決める際に、パスワード要素も決定するようにしてもよい。
【００５６】
＜実施形態３＞
上述した実施形態１では、図８のステップＳ２０に示したように、ハッシュ関数適用部２３は、パスフレーズ取得部２２が取得したパスフレーズを入力値として受け取り、ハッシュ関数を適用し、ハッシュ値を得るよう説明を行った。しかしながら、ハッシュ関数適用部２３は、パスフレーズと共に、パスワード長を入力値として受け取り、ハッシュ関数を適用し、ハッシュ値を得るようにしてもよい。
【００５７】
このような処理とすることにより、パスワード生成装置１は、同じパスフレーズであっても、パスワード長が異なれば異なるパスワードを生成することができる。なお、このパスワード長は、例えば、パスフレーズと同様、ユーザに入力させるものとする。
【００５８】
＜実施形態４＞
上述した実施形態１では、図８のステップＳ２０に示したように、ハッシュ関数適用部２３は、パスフレーズ取得部２２が取得したパスフレーズを入力値として受け取り、ハッシュ関数を適用し、ハッシュ値を得るよう説明を行った。しかしながら、ハッシュ関数適用部２３は、パスフレーズと共に、パスワード生成装置１の固有の文字列（例えば製品番号等）を入力値として受け取り、ハッシュ関数を適用し、ハッシュ値を得るようにしてもよい。
【００５９】
このような処理とすることにより、パスワード生成装置１は、同じパスフレーズであっても、パスワード生成装置１毎に異なるパスワードを生成することができる。
【００６０】
以上、上述した各実施形態によれば、パスフレーズ等の覚えやすい入力値に対して、例えば辞書の構成要素に係る偏りが生じない等の安全性の高いパスワードを生成することができる。
また、上述した各実施形態によれば、パスワードを生成するのに、特別な関数等を用いず、ハッシュ関数しか使っていない。ここで、ハッシュ関数は、どんなプログラム言語で実装しても同じ結果を出力する。つまり、上述した各実施形態は、どのようなプラットフォームにも実行することができる。
また、上述した各実施形態によれば、パスフレーズ等の入力値を少し変えただけで、全く異なったパスワードが生成されるので、安全性の高いパスワードを容易に生成することができる。
また、上述した実施形態によれば、既存の認証システムのパスワードに関する仕様に制約を受けず、且つ、既存の認証システムを変更せずに活用したまま、安全性の高いパスワードを容易に生成することができる。
【００６１】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば、上述した実施形態は、任意に組み合わせて実施してもよい。
【図面の簡単な説明】
【００６２】
【図１】パスワード生成装置（コンピュータ）のハードウェア構成の一例を示す図である。
【図２】パスワード生成装置の機能構成の一例を示す図である。
【図３】辞書列決定部の構成の一例を示す図である。
【図４】辞書順序決定部の構成の一例を示す図である。
【図５】新辞書列生成部における処理の一例を説明するための図である。
【図６】パスワード生成部の構成の一例を示す図である。
【図７】パスワード生成処理の一例を示すフローチャートである。
【図８】辞書列決定処理の一例を示すフローチャートである。
【図９】辞書順序決定処理の一例を示すフローチャートである。
【図１０】パスワード生成処理の一例を示すフローチャートである。
【符号の説明】
【００６３】
１    パスワード生成装置
１１  ＣＰＵ
１２  入力装置
１３  記憶装置
１４  表示装置
【図１】
0005258258.tif 000002
【図２】
0005258258.tif 000003
【図３】
0005258258.tif 000004
【図４】
0005258258.tif 000005
【図５】
0005258258.tif 000006
【図６】
0005258258.tif 000007
【図７】
0005258258.tif 000008
【図８】
0005258258.tif 000009
【図９】
0005258258.tif 000010
【図１０】
0005258258.tif 000011