(57)【特許請求の範囲】
【請求項１】
認証サーバーと通信する際に利用するワンタイムパスワードを生成するワンタイムパスワード装置であって、
装置固有の値である鍵を格納する鍵管理手段と、
前記鍵とは異なる値である世代鍵を設定する世代鍵設定手段と、
前記鍵および前記世代鍵に基づいて、ワンタイムパスワードを生成するための数列であるシードを生成するシード生成手段と、
時刻情報を発生する時刻発生手段と、
前記時刻情報と前記シードとを用いてワンタイムパスワードを生成するワンタイムパスワード生成手段と、を具備し、
前記世代鍵設定手段は、外部からの指示に従って、前記世代鍵を異なる値に更新し、
前記シード生成手段は、前記認証サーバーからそれぞれ異なる第１数の更新された世代鍵が取得される場合、前記第１数の更新された世代鍵のうち受信できた該第１数以下の数である第２数の世代鍵から、任意の可換な関数を用いて１つの世代鍵を算出し、前記鍵および該１つの世代鍵を用いて新たなシードを生成し、
前記ワンタイムパスワード生成手段は、前記新たなシードを用いて、前記ワンタイムパスワードを生成することを特徴とするワンタイムパスワード装置。
【請求項２】
前記更新された世代鍵は、外部に公開され、
前記世代鍵設定手段は、前記世代鍵が更新された場合、前記更新された世代鍵を前記認証サーバーから取得することを特徴とする請求項１に記載のワンタイムパスワード装置。
【請求項３】
前記世代鍵が更新された場合、能動的に前記認証サーバーから取得する方式であるプッシュ通知により、前記更新された世代鍵を受け取る通知取得部をさらに具備することを特徴とする請求項１に記載のワンタイムパスワード装置。
【請求項４】
前記シード生成手段は、最新に受信した世代鍵から第３数以下の世代鍵までを用いて、前記シードを生成することを特徴とする請求項１から請求項３のいずれか１項に記載のワンタイムパスワード装置。
【請求項５】
前記認証サーバーは、前記第１数の更新された世代鍵を、能動的に前記認証サーバーから取得する方式であるプッシュ通知により通知した場合、該プッシュ通知により通知した直近の第４数までの世代鍵のうち、前記第３数以下の世代鍵を要素とする組み合わせの数だけサーバー側シードを生成し、該組み合わせの数の該サーバー側シードからそれぞれ生成した前記ワンタイムパスワードを認証するための数値である認証値のなかで、前記ワンタイムパスワードと一致する認証値が存在すれば、認証成功と判定する請求項４に記載のワンタイムパスワード装置。
【請求項６】
認証サーバーと通信する際に利用するワンタイムパスワードを生成するワンタイムパスワード方法であって、
装置固有の値である鍵を鍵管理手段に格納し、
前記鍵とは異なる値である世代鍵を設定し、
前記鍵および前記世代鍵に基づいて、ワンタイムパスワードを生成するための数列であるシードを生成し、
時刻情報を発生し、
前記時刻情報と前記シードとを用いてワンタイムパスワードを生成し、
外部からの指示に従って、前記世代鍵を異なる値に更新し、
前記認証サーバーからそれぞれ異なる第１数の更新された世代鍵が取得される場合、前記第１数の更新された世代鍵のうち受信できた該第１数以下の数である第２数の世代鍵から、任意の可換な関数を用いて１つの世代鍵を算出し、前記鍵および該１つの世代鍵を用いて新たなシードを生成し、
前記新たなシードを用いて、前記ワンタイムパスワードを生成することを特徴とするワンタイムパスワード方法。
【請求項７】
認証サーバーと通信する際に利用するワンタイムパスワードを生成するワンタイムパスワードプログラムであって、
コンピュータを、
装置固有の値である鍵を格納する鍵管理手段と、
前記鍵とは異なる値である世代鍵を設定する世代鍵設定手段と、
前記鍵および前記世代鍵に基づいて、ワンタイムパスワードを生成するための数列であるシードを生成するシード生成手段と、
時刻情報を発生する時刻発生手段と、
前記時刻情報と前記シードとを用いてワンタイムパスワードを生成するワンタイムパスワード生成手段として機能させ、
前記世代鍵設定手段は、外部からの指示に従って、前記世代鍵を異なる値に更新し、
前記シード生成手段は、前記認証サーバーからそれぞれ異なる第１数の更新された世代鍵が取得される場合、前記第１数の更新された世代鍵のうち受信できた該第１数以下の数である第２数の世代鍵から、任意の可換な関数を用いて１つの世代鍵を算出し、前記鍵および該１つの世代鍵を用いて新たなシードを生成し、
前記ワンタイムパスワード生成手段は、前記新たなシードを用いて、前記ワンタイムパスワードを生成することを特徴とするワンタイムパスワードプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワンタイムパスワードを生成するワンタイムパスワード装置、方法及びプログラム。
【背景技術】
【０００２】
ネットワークではユーザを認証する技術が重要である。ユーザ認証は、例えば、ＰＤＡ、携帯電話、ノートＰＣ等の端末からネットワークを介して、コンピュータシステムに接続する際に、接続しようとする端末のユーザが適切かどうかを判断するための技術である。安全かつ確実に重要な情報にアクセスするためには、ユーザ認証技術が重要となるが、ユーザ認証の際に、よく利用されるのがＩＤとパスワードである。近年、パスワードの漏洩による不正アクセスの増加が問題となっている。
【０００３】
不正アクセスの防止策として、パスワードを利用する認証よりも強力なワンタイムパスワード（ＯＴＰ（One Time Password）ともいう）を利用する技術がある。
【０００４】
ワンタイムパスワードは、例えば、ＯＴＰ生成装置（トークンとも呼ばれる）によって、プロバイダが発行したＯＴＰシードと、時刻情報とに対応させて生成される。さらに、このプロバイダを提供している認証サーバーは、このユーザの識別情報に対応するＯＴＰシードを格納し、ＯＴＰシードと時刻情報とに対応したワンタイムパスワードを生成する。ＯＴＰ生成装置と認証サーバーとでは、同一のＯＴＰシード情報を所有し、ワンタイムパスワードを生成するアルゴリズムも同一に設定してある。さらに、時刻情報も同期させておくので、ＯＴＰ生成装置が生成するワンタイムパスワードと認証サーバーが生成するワンタイムパスワードとは同一になり、ユーザ認証を行うことができる。
【０００５】
このワンタイムパスワードは、時刻情報が変化するため、認証のために１回しか使用することができない。したがって、ワンタイムパスワード認証は高い安全性を確保することができる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４６６３６７６号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、ＯＴＰをスマートフォン等の多機能端末に実装する場合には、悪質なマルウェア等のウィルスに感染することがあり、ウィルスの感染によりＯＴＰシードが漏洩される危険性がある。ＯＴＰシードは端末固有に設定されるので、ＯＴＰシードの漏洩は、セキュリティ上非常に危険である。
【０００８】
本発明は、上述した事情を考慮してなされたものであり、ワンタイムパスワードの安全性をより高めることができるワンタイムパスワード装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の課題を解決するため、本実施形態にかかるワンタイムパスワード装置は、認証サーバーと通信する際に利用するワンタイムパスワードを生成するワンタイムパスワード装置であって、装置固有の値である鍵を格納する鍵管理手段と、前記鍵とは異なる値である世代鍵を設定する世代鍵設定手段と、前記鍵および前記世代鍵に基づいて、ワンタイムパスワードを生成するための数列であるシードを生成するシード生成手段と、時刻情報を発生する時刻発生手段と、前記時刻情報と前記シードとを用いてワンタイムパスワードを生成するワンタイムパスワード生成手段と、を具備し、前記世代鍵設定手段は、第１期間の経過後および外部からの指示の少なくともどちらか１つに従って、前記世代鍵を異なる値に更新し、前記ワンタイムパスワード生成手段は、更新された世代鍵に基づいて生成されたシードを用いて、前記ワンタイムパスワードを生成する。
【発明の効果】
【００１０】
本発明のワンタイムパスワード装置、方法及びプログラムによれば、ワンタイムパスワードの安全性をより高めることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に係るワンタイムパスワード装置を示すブロック図。
【図２】第１の実施形態に係る認証サーバーを示すブロック図。
【図３】ワンタイムパスワードシステムの動作の一例を示すシーケンス図。
【図４】認証サーバーでの誤認証率を説明する概念図。
【図５】誤受入率を説明する概念図。
【図６】誤拒否率を説明する概念図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら本発明の実施形態に係るワンタイムパスワード装置、方法及びプログラムについて詳細に説明する。なお、以下の実施形態中では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
【００１３】
本実施形態では、ワンタイムパスワード装置（以下、ＯＴＰ装置という）と認証サーバーとがやりとりを行うワンタイムパスワードシステムを想定する。ＯＴＰ装置は、例えば、ユーザが操作するスマートフォン、タブレットコンピュータおよび携帯電話に含まれることを想定するが、ＯＴＰ装置が外部にあり、スマートフォン、タブレットコンピュータおよび携帯電話がＯＴＰ装置に接続可能な状態で利用してもよい。認証サーバーは、ＯＴＰ装置を利用してユーザがデータのやり取りを行う相手である。
【００１４】
（第１の実施形態）  
第１の実施形態のワンタイムパスワード装置について図１を参照して説明する。  
第１の実施形態のワンタイムパスワード装置１００は、鍵管理部１０１、世代鍵設定部１０２、シード生成部１０３、時刻発生部１０４、ワンタイムパスワード生成部１０５（以下、ＯＴＰ生成部１０５）、入力部１０６、表示部１０７、制御部１０８および通知取得部１０９を含む。
【００１５】
鍵管理部１０１は、鍵データを格納している。この鍵データは、ＯＴＰ装置１００を含む機器固有の情報であり、例えば、ＯＴＰを生成するための数列である。また鍵データは、外部に公開されず、ＯＴＰ装置１００内で保持される。
【００１６】
世代鍵設定部１０２は、ワンタイムパスワードを生成するための数列を示す世代鍵を設定する。世代鍵は、鍵データと異なり、外部のクラウドサーバーなどから信頼できる通信路を用いてＯＴＰ装置に送信される。なお、世代鍵は外部のクラウドサーバなどに公開されてもよいまた、世代鍵は、１，２，３，・・・といったカウンタ値でもよいし、１２８ｂｉｔ程度の物理乱数または暗号学的擬似乱数などでもよい。また、世代鍵設定部１０２は、後述する通知取得部１０９から世代鍵を受け取り、世代鍵の値を更新する。
【００１７】
シード生成部１０３は、鍵管理部１０１から鍵データを、世代鍵設定部１０２から世代鍵をそれぞれ受け取り、鍵データと世代鍵とに基づいてシードを生成する。
【００１８】
時刻発生部１０４は、時刻を発生する。この時刻は、後述する認証サーバー２００に含まれる時刻発生部２０４が生成する時刻に同期している。
【００１９】
ＯＴＰ生成部１０５は、シード生成部１０３からシードを、時刻発生部１０４から時刻をそれぞれ受け取り、時刻とシードとを用いてワンタイムパスワードを生成する。このワンタイムパスワードは、時刻とシードとの入力値とに応じて決定される数値であり、例えば２つの入力値が異なれば圧倒的に高い確率で出力値が異なるような関数（ハッシュ関数など）を使用して生成される。ＯＴＰ発生器１０４は、ハッシュ関数で得られた数値の一部（例えば、２０ビット）をワンタイムパスワードとして出力する。
【００２０】
表示部１０６は、例えばディスプレイであり、ワンタイムパスワードを含むデータまたは画像を表示する。
【００２１】
入力部１０７は、ユーザがＯＴＰ装置１００を操作するための情報を入力する。入力部１０６は例えば、ユーザがサービスを選択する際に利用される。
【００２２】
制御部１０８は、ＯＴＰ装置１００に含まれる各部を制御する。  
通知取得部１０９は、世代鍵に更新があった場合に、外部から取得したり、認証サーバーから更新された世代鍵についてのプッシュ通知を受け取る。プッシュ通知は、世代鍵が更新された場合に能動的に認証サーバーから更新された世代鍵を取得する方式である。なお、プッシュ通知の方式については、ＳＭＳ（short message service）、電子メールやPush Notificationなどを、サーバーから端末側にデータを非同期で送信する一般的な方式でよく、即時性や送達順序が保証されている必要はない。
【００２３】
次に、第１の実施形態にかかる認証サーバーについて図２を参照して説明する。  
第１の実施形態に係る認証サーバー２００は、鍵管理部２０１、世代鍵設定部２０２、シード生成部２０３、時刻発生部２０４、ＯＴＰ検証部２０５および制御部２０６を含む。
【００２４】
鍵管理部２０１は、ＯＴＰ装置１００の識別子（ＩＤ）とＯＴＰ装置１００の鍵管理部１０１で保持される固有の鍵データとを対応付けて、ＯＴＰ装置１００ごとに保持する。具体的には、例えばプロバイダごとに、サービスを提供しているプロバイダの識別情報と、ユーザの識別情報と、ユーザ固有の鍵データとを対応づけて格納する。ユーザ固有の鍵データは、ユーザが利用するＯＴＰ装置１００の鍵管理部１０１における鍵データと同一である。すなわち、同一のプロバイダでも、ユーザによってユーザの識別情報と鍵データとは異なっている。したがって、ワンタイムパスワードは安全性に優れ、ネットワーク上の正しい相手とのみ認証が可能になる。
【００２５】
世代鍵設定部２０２は、上述した世代鍵となる数値を設定し、クラウドサーバなどを通じて、ＯＴＰ装置１００にプッシュ通知を行なう。また、世代鍵設定部２０２は、一定期間の経過後であるか、ユーザや他の監視システムなど外部からの指示があるかの少なくともどちらか１つに従って、世代鍵の値を更新する。外部からの指示が発生するタイミングとしては、例えばユーザや監視システムが、シードがウィルスなどにより外部に漏洩した可能性があると判断したタイミングなどである。
【００２６】
シード生成部２０３は、鍵管理部２０１からワンタイムパスワードを送信してきたＯＴＰ装置に対応する鍵データを、世代鍵設定部２０２から世代鍵をそれぞれ受け取り、鍵データと世代鍵とに基づいてシード（サーバー側シードともいう）を生成する。
【００２７】
時刻発生部２０４は、時刻を発生する。
【００２８】
ＯＴＰ検証部２０５は、時刻発生部２０４から時刻を、シード生成部２０３からシードをそれぞれ受け取り、時刻とシードとを用いて認証値を生成する。認証値は、ＯＴＰ装置１００から送信されるワンタイムパスワードが正しいかどうかを判定するための数値である。この認証値を発生するためのアルゴリズムは、本実施形態のワンタイムパスワード装置１００でのＯＴＰ生成部１０５と同様である。ＯＴＰ検証部２０５は、ワンタイムパスワード装置１００からワンタイムパスワードを受け取り、認証値とワンタイムパスワードとを比較し、認証値とワンタイムパスワードとが一致するかどうかを判定する。認証値とワンタイムパスワードとが一致すれば認証成功と判定し、認証値とワンタイムパスワードとが一致しなければ認証失敗と判定する。
【００２９】
制御部２０６は、認証サーバー２００の各部を制御する。例えば、ＯＴＰ検証部２０５が認証成功と判定した場合、認証が成功したことに関する情報をワンタイムパスワード装置１００に送信したり、世代鍵に更新があった場合は、更新された世代鍵をＯＴＰ装置１００へプッシュ通知するといった制御を行なう。なお、図示しないが、認証サーバー２００は、ＯＴＰ装置１００の時刻発生器１０４が発生する時刻の誤差を測定し、誤差を補正するための情報を格納してもよい。
【００３０】
次に、図１に示すＯＴＰ装置１００と図２に示す認証サーバー２００とを含むワンタイムパスワードシステムの動作の一例について図３のシーケンス図を参照して説明する。  
ここでは、ユーザがスマートフォン（高機能携帯端末）を利用してプロバイダが提供するアプリケーションを利用するため認証サーバーにアクセスする場合を想定する。
【００３１】
ステップＳ３０１では、ユーザの操作により、表示部１０６が、所望のプロバイダサイトを表示する。  
ステップＳ３０２では、ユーザの操作により、サービスの提供を受けたいプロバイダが選択される。ユーザは、例えば入力部１０７を使用し、スマートフォンの画面上で、パスワードとして暗証番号を入力し、サービスの提供をするプロバイダの一覧を表示部１０６が表示し、複数のプロバイダの中から先に表示させたプロバイダを選択する。
【００３２】
ステップＳ３０３では、ＯＴＰ装置１００のシード生成部１０３が、鍵データおよび世代鍵からシードを生成する。
【００３３】
ステップＳ３０４では、ＯＴＰ装置１００のＯＴＰ生成部１０４が、シードおよび時刻からワンタイムパスワードを生成し、ワンタイムパスワードを認証サーバー２００に送信する。
【００３４】
ステップＳ３０５では、認証サーバー２００のシード生成部２０３が、ユーザが選択したプロバイダで登録されたユーザの鍵データと世代鍵とからシードを生成する。
【００３５】
ステップＳ３０６では、認証サーバー２００のＯＴＰ検証部２０５が、ステップＳ３０５で生成したシードと時刻とを用いて認証値を生成する。
【００３６】
ステップＳ３０７では、認証サーバー２００のＯＴＰ検証部２０５が、ＯＴＰ装置１００から受け取ったワンタイムパスワードとステップＳ３０６で生成した認証値とが一致するかどうかの認証処理を行なう。ここでは、ワンタイムパスワードと認証値とが一致するとし、認証成功と判定されるので、ユーザにプロバイダのアプリケーションの利用を許可する旨を通知する。
【００３７】
ステップＳ３０８では、世代鍵を設定してから一定期間が経過したと想定し、世代鍵設定部２０２が世代鍵を更新する。認証サーバー２００は、更新した世代鍵をＯＴＰ装置１００へプッシュ通知する。なお、プッシュ通知に限らず、更新された世代鍵は外部に公開され、ＯＴＰ装置１００が更新された世代鍵を取得してもよい。
【００３８】
ステップＳ３０９では、その後、ユーザがプロバイダのアプリケーションを利用する場合は、ＯＴＰ装置１００のシード生成部１０３が、鍵データと更新された世代鍵とを用いて新たなシードを生成する。
【００３９】
ステップＳ３１０では、ＯＴＰ生成部１０５では、新たなシードと時刻とを用いて新たなワンタイムパスワードを生成し、新たなワンタイムパスワードを認証サーバー２００へ送信する。
【００４０】
ステップＳ３１１では、認証サーバー２００のシード生成部２０３において、更新された世代鍵を用いて新たなシードを生成し、時刻発生部２０４が発生した時刻と新たなシードとから新たな認証値を生成する。以下、ステップＳ３０７からステップＳ３１１と同様の処理を繰り返せばよい。
【００４１】
なお、上述のように世代鍵を更新するタイミングは、ユーザの指示に応じて世代鍵を更新してもよいし、認証サーバー２００側で情報漏えいやハッキングなどのセキュリティ上のリスクを察知した場合に、世代鍵を更新するようにしてもよい。
【００４２】
以上に示した第１の実施形態によれば、シードを生成する際に世代鍵を用いて動的にシードを生成することで、シードが漏えいしても、世代鍵を更新することで新たなシードを変更することができ、ワンタイムパスワードの安全性をより向上させることができる。
【００４３】
（第２の実施形態）  
第１の実施形態では、１つの世代鍵を用いてワンタイムパスワードを生成する例を示したが、第２の実施形態では、複数の世代鍵を用いてワンタイムパスワードを生成する点が異なる。このようにすることで、パケットロスが発生するような信頼性が低い一般的なネットワークでもワンタイムパスワードによる認証の安全性を高めることができる。
【００４４】
第２の実施形態に係るＯＴＰ装置および認証サーバーの構成については、世代鍵設定部１０２および世代鍵設定部２０２、シード生成部１０３およびシード生成部２０３以外は、第１の実施形態に係るＯＴＰ装置および認証サーバーの構成と同様の構成であるのでここでの説明を省略する。
【００４５】
世代鍵設定部１０２は、認証サーバー２００からプッシュ通知された世代鍵を更新される前の世代鍵も含めて複数保持する。
【００４６】
シード生成部１０３は、世代鍵設定部１０２から複数の世代鍵と、鍵管理部１０１から鍵データとをそれぞれ受け取り、複数の世代鍵を用いてシードを生成する。シードの生成処理としては、例えば、複数の世代鍵を任意の関数を用いて１つの世代鍵として算出し、この世代鍵と鍵データとを用いてシードを生成する。
【００４７】
例えば、認証サーバー２００がｔ個（ｔは自然数）の世代鍵Ｕ＝｛ｘ１，ｘ２，...，ｘt｝をＯＴＰ装置１００にプッシュ通知したとする。このとき、プッシュ通知された世代鍵が確率ｅで消失（パケットロス）し、ＯＴＰ装置１００ではｋ個（ｋは自然数であって、ｋ≦ｔ）の世代鍵
【数１】
0005555799.tif 000002
【００４８】
を受信するとする。ＯＴＰ装置１００はｋ個の世代鍵を用いて任意の可換な関数
【数２】
0005555799.tif 000003
【００４９】
を計算し、関数Ｆ（Ｔ）から得られる１つの世代鍵ｘ０を算出する。関数としては、例えば、以下の式（１）の関数を用いて世代鍵ｘ０を算出すればよい。
【数３】
0005555799.tif 000004
【００５０】
次に、世代鍵ｘ０を用いて生成されたワンタイムパスワードの認証処理について説明する。  
認証サーバー２００では、どのパケットが消失してＯＴＰ装置１００で受信できていないかはわからないため、送信したｔ個の世代鍵Ｕの全ての部分集合Ｓ（但し、Ｓ⊆Ｕ）について、世代鍵Ｘ＝｛ｘｔ＝Ｆ（Ｓ）｜Ｓ⊆Ｕ｝を計算する。この世代鍵Ｘを用いて、認証値を生成する。すなわち、認証値は部分集合の数だけ生成されることになる。認証サーバー２００のＯＴＰ検証部２０５は、ＯＴＰ装置１００から世代鍵ｘ０を用いて生成されたワンタイムパスワードを受け取り、ワンタイムパスワードと認証値とを比較し、ワンタイムパスワードと一致する認証値が存在すれば、認証成功とすればよい。
【００５１】
なお、組み合わせに基づいて認証値を算出する場合は、世代鍵の組み合わせが増えるごとに多くの認証値を保持する必要がある。そこで、ＯＴＰ装置１００側において受信した世代鍵のうち、最新に受信したｋ個を用いて世代鍵ｘ０を算出するようにしてもよい。このようにすることで、ＯＴＰ装置１００で保持する世代鍵の数を限定することができ、省メモリ化することができる。  
この場合は、ＯＴＰ装置側のＯＴＰ生成処理は、上述のように、ｋ個の世代鍵を用いて任意の可換な関数Ｆ（Ｔ）から得られる１つの世代鍵ｘ０を算出すればよい。
【００５２】
一方、認証サーバー２００では、ＯＴＰ装置１００にプッシュ通知したｔ個の世代鍵Ｕのうち、ｋ個の要素の組み合わせからなる部分集合Ｓ⊆Ｕについて世代鍵Ｘｋを生成すればよく、認証サーバー２００のＯＴＰ検証部２０６は、ＯＴＰ装置１００から世代鍵ｘ０を用いて生成されたワンタイムパスワードを受け取り、ワンタイムパスワードと認証値とを比較し、ワンタイムパスワードと一致する認証値が存在すれば、認証成功とすればよい。このように、ＯＴＰ装置１００と認証サーバー２００との両方において、保持する世代鍵の組み合わせを減らすことができる。
【００５３】
さらに、認証サーバー２００から世代鍵を一定期間ＯＴＰ装置１００にプッシュ通知していると、どの程度パケットロスするかの統計を取ることができる。この統計を参照することで、認証サーバー２００において認証に用いる世代鍵の数を限定してもよい。  
認証サーバー２００がｔ個の世代鍵Ｕ＝｛ｘ１，ｘ２，...，ｘt｝をＯＴＰ装置にプッシュ通知したときに、ｌ個（ｌは自然数であって、ｌ≦ｔ）までで打ち切り、Ｕｌ＝｛ｘ１，ｘ２，...，ｘｌ｝を認証サーバー２００がプッシュ通知した世代鍵とし、ＯＴＰ装置１００では、ｋ個の世代鍵Ｔ＝｛ｘｉ１，ｘｉ２，...，ｘｉｋ｝⊆Ｕを受信するとする。
【００５４】
認証サーバー２００では、世代鍵Ｕｌのうちのｋ個の要素の組み合わせからなる部分集合の世代鍵Ｘｋを生成し、上述と同様の認証処理を行えばよい。このようにすることで、ＯＴＰ装置１００と認証サーバー２００との両方において、さらに保持する必要がある世代鍵を減らすことができる。
【００５５】
次に、ワンタイムパスワードを利用する際の認証サーバー２００での誤認証率について図４を参照して説明する。  
誤認証率として、誤受入率と誤拒否率とが考えられる。誤受入率は、間違ったパスワードを入力しているが誤って認証成功してしまう確率を示し、誤拒否率は、正しいパスワードを入力しているが誤って認証拒否される確率を示す。
【００５６】
図４は、３つの世代鍵を用いて、８桁のワンタイムパスワードを受信する際の世代鍵のプッシュ通知の消失率を１パーセントとした場合の、誤拒否率を示すグラフ４０１と、誤受入率を示すグラフ４０２とを示す。また、縦軸は確率値であり、横軸は認証サーバーが送信した世代鍵のうち認証に用いる世代鍵を直近ｌ個で打ち切った場合の数である。図４に示すように、打ち切り数ｌが多いほど誤受入率が高くなり、打ち切り数ｌが少ないほど誤受入率が低くなる。一方、打ち切り数ｌが少なくなるほど、誤拒否率が増加し、特にｌ＝６以下の場合に急激に誤拒否率が増加する。これは、必要となる世代鍵の数が３つであり、プッシュ通知の消失率１％としたときに、直近に送られた６個の世代鍵のうち３つ以上の世代鍵を受信する必要があるので、ＯＴＰ装置１００側で受信できた世代鍵の数が少ないほど誤拒否率が増加するからである。
【００５７】
次に、誤受入率について図５の概念図を参照して説明する。  
図５の上段は、認証サーバー２００側から送信される世代鍵５０１を表し、図５の下段は、ＯＴＰ装置側で受信した世代鍵５０２を表す。ここで、「消失」とは、ＯＴＰ装置１００側で世代鍵５０２を受信できなかった場合を示す。  
ここで、３つの世代鍵を用いてワンタイムパスワードを生成する場合、９個の世代鍵５０１から３つの世代鍵を取り出す組み合わせは、９Ｃ３＝８４（通り）存在することになる。図５の例では、ＯＴＰ装置１００側でワンタイムパスワードを生成するために用いる３つの世代鍵５０３と一致する、認証サーバー２００での世代鍵５０２のうちの３つの世代鍵の組み合わせであるｘ５２が存在するので、ＯＴＰ装置１００から送信されたワンタイムパスワードは認証成功となる。
【００５８】
なお、８４通りの組み合わせは、認証成功となる世代鍵の組み合わせを示すこととなるので、必然的に誤認証の確率が上昇することになる。８桁のワンタイムパスワードの場合は、図５の例で誤受入（Ｆａｌｓｅ  ａｃｃｅｐｔ）となる確率は、一様ランダムを仮定すると８４／１０８となる。一般に、ｌ個の世代鍵（乱数）のうちのｋ個（ｋ＜ｌ）の世代鍵（乱数）を選択してｄ桁（ｄは自然数）のワンタイムパスワードを生成する場合、誤受入率は、以下の式（２）で表すことができる。  
【数４】
0005555799.tif 000005
【００５９】
次に、誤拒否率について図６の概念図を参照して説明する。  
図６は、図５と同様に、図６の上段は、認証サーバー２００側から送信される世代鍵６０１を表し、図６の下段は、ＯＴＰ装置１００側で受信した世代鍵６０２を表す。「消失」は、ＯＴＰ装置１００側で世代鍵６０２を受信できない場合である。
【００６０】
ここでは、認証サーバー２００側がプッシュ通知した直近のｌ個の世代鍵のうちｋ個を用いて生成されるワンタイムパスワード集合に含まれるワンタイムパスワードのいずれかが入力された場合に認証が成功する。
【００６１】
つまり、ｌ個の世代鍵のうちｋ個以上が消失せずにＯＴＰ装置側で受信される場合に、正しいＯＴＰ装置１００を認証することができる。一方、ｌ−ｋ＋１個以上の世代鍵が消失した場合は、ＯＴＰ装置１００側で受信できた世代鍵が、認証サーバー２００側で利用する直近の世代鍵に存在せず、正しいはずのＯＴＰ装置を拒否してしまう場合が生じる。
【００６２】
認証サーバー２００側でプッシュ通知した世代鍵が途中で消失し、ＯＴＰ装置１００に届かないという事象が、独立に確率（消失率）εで生じる場合、世代鍵がｌ−ｋ＋１個消失してＯＴＰ装置に届かずに誤拒否される確率は、式（３）で表すことができる。
【数５】
0005555799.tif 000006
【００６３】
以上より、誤受入率を考慮すると、ｌ個の世代鍵を用いる場合は、ｌ／２個の世代鍵を選択するように設定することが望ましい。
【００６４】
以上に示した第２の実施形態によれば、複数の世代鍵を組み合わせてワンタイムパスワードを生成することで、パケットロスが発生するような信頼性が低い一般的なネットワークでもワンタイムパスワードによる認証の安全性を高めることができる。
【００６５】
上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述したワンタイムパスワード装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷ、Ｂｌｕ−ｒａｙ（登録商標）Ｄｉｓｃなど）、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態のワンタイムパスワード装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。  
また、記録媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本実施形態における記録媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記録媒体も含まれる。  
また、記録媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本実施形態における記録媒体に含まれ、媒体の構成は何れの構成であってもよい。
【００６６】
なお、本実施形態におけるコンピュータまたは組み込みシステムは、記録媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本実施形態における機能を実現することが可能な機器、装置を総称している。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行なうことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１００・・・ワンタイムパスワード装置（ＯＴＰ装置）、１０１，２０１・・・鍵管理部、１０２，２０２・・・世代鍵設定部、１０３，２０３・・・シード生成部、１０４，２０４・・・時刻発生部、１０５・・・ワンタイムパスワード生成部（ＯＴＰ生成部）、１０６・・・入力部、１０７・・・表示部、１０８・・・制御部、１０９・・・通知取得部、２００・・・認証サーバー、２０５・・・ＯＴＰ検証部、２０６・・・制御部、４０１，４０２・・・グラフ、５０１，５０２，５０３，６０１，６０２・・・世代鍵。
【要約】
【課題】ワンタイムパスワードの安全性をより高めることができる。
【解決手段】本開示の一実施形態に係るワンタイムパスワード装置は、装置固有の値である鍵を格納する鍵管理手段と、鍵とは異なる値である世代鍵を設定する世代鍵設定手段と、鍵および世代鍵に基づいて、ワンタイムパスワードを生成するための数列であるシードを生成するシード生成手段と、時刻情報を発生する時刻発生手段と、時刻情報と前記シードとを用いてワンタイムパスワードを生成するワンタイムパスワード生成手段と、を具備し、世代鍵設定手段は、第１期間の経過後および外部からの指示の少なくともどちらか１つに従って、世代鍵を異なる値に更新し、ワンタイムパスワード生成手段は、更新された世代鍵に基づいて生成されたシードを用いて、ワンタイムパスワードを生成する。
【選択図】図１【図１】
0005555799.tif 000007
【図２】
0005555799.tif 000008
【図３】
0005555799.tif 000009
【図４】
0005555799.tif 000010
【図５】
0005555799.tif 000011
【図６】
0005555799.tif 000012