(57)【要約】【課題】鍵の漏洩による不正アクセスを確実に抑止する。【解決手段】本開示に係る情報処理装置は、サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する秘密鍵生成部と、前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する公開鍵生成部と、前記公開鍵を前記外部装置へ送信する送信部と、前記秘密鍵を用いて前記外部装置と認証を行う認証処理部と、を備える。この構成により、鍵の漏洩による不正アクセスを確実に抑止することが可能となる。【選択図】図１０
2014068140.tif 000002
【特許請求の範囲】
【請求項１】
サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する秘密鍵生成部と、
前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する公開鍵生成部と、
前記公開鍵を前記外部装置へ送信する送信部と、
前記秘密鍵を用いて前記外部装置と認証を行う認証処理部と、
を備える、情報処理装置。    
【請求項２】
前記所定値は、固定値である、請求項１に記載の情報処理装置。
【請求項３】
前記所定値は、入力されたパスワードである、請求項１に記載の情報処理装置。
【請求項４】
前記秘密鍵生成部は、前記外部装置と認証を行う度に、受信した前記乱数から前記秘密鍵を生成する、請求項１に記載の情報処理装置。
【請求項５】
生成した前記秘密鍵を保持する秘密鍵保持部を備える、請求項１に記載の情報処理装置。
【請求項６】
前記公開鍵生成部は、前記秘密鍵に基づいて、前記サービスを提供する前記外部装置毎に異なる前記公開鍵を生成する、請求項１に記載の情報処理装置。
【請求項７】
前記公開鍵生成部は、ＭＱ関数と前記秘密鍵とから前記公開鍵を生成する、請求項１に記載の情報処理装置。
【請求項８】
前記秘密鍵生成部は、前記乱数と前記所定値にハッシュ演算を行うことで前記秘密鍵を生成する、請求項１に記載の情報処理装置。
【請求項９】
前記所定値として前記秘密鍵とは異なるマスタ秘密鍵を用いる、請求項２に記載の情報処理装置。
【請求項１０】
サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成することと、
前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成することと、
前記公開鍵を前記外部装置へ送信することと、
前記秘密鍵を用いて前記外部装置と認証を行うことと、
を備える、情報処理方法。
【請求項１１】
サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する手段、
前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する手段、
前記公開鍵を前記外部装置へ送信する手段、
前記秘密鍵を用いて前記外部装置と認証を行う手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、下記の特許文献１には、ユーザが入力したパスワードと、サーバから送られた固定値とのハッシュ値を用いて認証を行う技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許０４８２０９２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術では、サーバから送信された固定値を用いて認証を行うため、固定値が漏洩すると、悪意のあるユーザによってサーバへの不正なアクセスが行われる問題がある。
【０００５】
そこで、鍵の漏洩による不正アクセスを確実に抑止することが求められていた。
【課題を解決するための手段】
【０００６】
本開示によれば、サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する秘密鍵生成部と、前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する公開鍵生成部と、前記公開鍵を前記外部装置へ送信する送信部と、前記秘密鍵を用いて前記外部装置と認証を行う認証処理部と、を備える、情報処理装置が提供される。
【０００７】
また、前記所定値は、固定値であっても良い。
【０００８】
また、前記所定値は乱数から生成したものであっても良い。
【０００９】
また、前記所定値は、入力されたパスワードであっても良い。
【００１０】
また、前記公開鍵生成部は、ＭＱ関数と前記秘密鍵とから前記公開鍵を生成するものであっても良い。
【００１１】
また、前記秘密鍵生成部は、前記乱数と前記所定値にハッシュ演算を行うことで前記秘密鍵を生成するものであっても良い。
【００１２】
また、前記所定値として前記秘密鍵とは異なるマスタ秘密鍵を用いるものであっても良い。
【００１３】
また、前記秘密鍵生成部は、前記外部装置と認証を行う度に、受信した前記乱数から前記秘密鍵を生成するものであっても良い。また、生成した前記秘密鍵を保持する秘密鍵保持部を備えるものであっても良い。また、前記公開鍵生成部は、前記秘密鍵に基づいて、前記サービスを提供する前記外部装置毎に異なる前記公開鍵を生成するものであっても良い。
【００１４】
また、本開示によれば、サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成することと、前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成することと、前記公開鍵を前記外部装置へ送信することと、
前記秘密鍵を用いて前記外部装置と認証を行うことと、を備える、情報処理方法が提供される。
【００１５】
また、本開示によれば、サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する手段、前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する手段、前記公開鍵を前記外部装置へ送信する手段、前記秘密鍵を用いて前記外部装置と認証を行う手段、としてコンピュータを機能させるためのプログラムが提供される。
【発明の効果】
【００１６】
本開示によれば、鍵の漏洩による不正アクセスを確実に抑止することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
【図２】ｎパスの公開鍵認証方式について説明するための説明図である。
【図３】３パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。
【図４】パスワード認証と公開鍵認証との相違を示す模式図である。
【図５】複数のユーザが複数のサービスにＩＤと公開鍵を登録した状態を示す模式図である。
【図６】あるサービスＳ１から公開鍵ｐｋが漏えいするケースを示す模式図である。
【図７】本実施形態のシステムの概要を示す模式図である。
【図８】サービスＳ１，Ｓ２，・・・，Ｓｎ毎に異なる公開鍵ｐｋ１，ｐｋ２，・・・，ｐｋｎを登録した状態を示す模式図である。
【図９】本実施形態の処理フローを示す模式図である。
【図１０】本実施形態のシステムの構成例を示す模式図である。
【図１１】パスワードｐａｓｓと乱数ｒｎｄとのハッシュ値から秘密鍵ｓｋを生成する例を示す模式図である。
【図１２】情報処理装置のハードウェア構成を示す模式図である。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１９】
［説明の流れについて］
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図１を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図２を参照しながら、ｎパスの公開鍵認証方式について説明する。
【００２０】
次いで、図３を参照しながら、３パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図１２を参照しながら、本技術の実施形態に係る各アルゴリズムを実現することが可能な情報処理装置のハードウェア構成例について説明する。
【００２１】
なお、説明は以下の順序で行うものとする。
１：はじめに
１−１：公開鍵認証方式のアルゴリズム
１−２：ｎパスの公開鍵認証方式
２：３パスの公開鍵認証方式に係るアルゴリズムの構成
２−１：具体的なアルゴリズムの構成例
３：本実施形態のシステムの構成例
３−１：パスワード認証と公開鍵認証について
３−２：異なるユーザ間で公開鍵が一致する場合について
３−３：本実施形態に係るシステムの概要
３−４：本実施形態の処理フロー
３−５：本実施形態のシステムの構成例
３−６：本実施形態の変形例について
４：ハードウェア構成例
【００２２】
＜１：はじめに＞
本実施形態は、ユーザがサービスを利用する際のユーザ認証に関する。最初に、本実施形態への適用が好適なユーザ認証の方式として、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式（以下、ＭＱプロトコルとも称する場合がある）を説明する。但し、本実施形態は、ＨＦＥ電子署名方式などの従来手法とは異なり、効率的に解く手段（トラップドア）を持たない多次多変数連立方程式を利用する公開鍵認証方式に関する。なお、本実施形態に適用可能な認証方式はこれに限定されるものではなく、他の公開鍵認証方式を広く適用することが可能である。まず、公開鍵認証方式のアルゴリズム、及びｎパスの公開鍵認証方式について、その概要を簡単に説明する。
【００２３】
［１−１：公開鍵認証方式のアルゴリズム］
まず、図１を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図１は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
【００２４】
公開鍵認証は、ある人（証明者）が、公開鍵ｐｋ及び秘密鍵ｓｋを利用して、他の人（検証者）に本人であることを納得させるために利用される。例えば、証明者Ａの公開鍵ｐｋＡは、検証者Ｂに公開される。一方、証明者Ａの秘密鍵ｓｋＡは、証明者Ａにより秘密に管理される。公開鍵認証の仕組みにおいては、公開鍵ｐｋＡに対応する秘密鍵ｓｋＡを知る者が証明者Ａ本人であるとみなされる。
【００２５】
公開鍵認証の仕組みを利用して証明者Ａが証明者Ａ本人であることを検証者Ｂに証明するには、対話プロトコルを介して、証明者Ａが公開鍵ｐｋＡに対応する秘密鍵ｓｋＡを知っているという証拠を検証者Ｂに提示すればよい。そして、証明者Ａが秘密鍵ｓｋＡを知っているという証拠が検証者Ｂに提示され、その証拠を検証者Ｂが確認し終えた場合、証明者Ａの正当性（本人であること）が証明されたことになる。
【００２６】
但し、公開鍵認証の仕組みには、安全性を担保するために以下の条件が求められる。
【００２７】
１つ目の条件は、「対話プロトコルを実行した際に秘密鍵ｓｋを持たない偽証者により偽証が成立してしまう確率を限りなく小さくする」ことである。この１つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性とは、「秘密鍵ｓｋを持たない偽証者により、対話プロトコルの実行中に無視できない確率で偽証が成立することはないこと」と言い換えられる。２つ目の条件は、「対話プロトコルを実行したとしても、証明者Ａが有する秘密鍵ｓｋＡの情報が検証者Ｂに一切漏れることがない」ことである。この２つ目の条件が成り立つことを「零知識性」と呼ぶ。
【００２８】
安全に公開鍵認証を行うには、健全性及び零知識性を有する対話プロトコルを利用する必要がある。仮に、健全性及び零知識性を有しない対話プロトコルを用いて認証処理を行った場合には、偽証された可能性及び秘密鍵の情報が漏れてしまった可能性が否定できないため、処理自体が成功裡に完了しても証明者の正当性を証明したことにはならない。従って、対話プロトコルの健全性及び零知識性を如何に保証するかが重要になる。
【００２９】
（モデル）
公開鍵認証方式のモデルには、図１に示すように、証明者と検証者という２つのエンティティが存在する。証明者は、鍵生成アルゴリズムＧｅｎを用いて、証明者固有の秘密鍵ｓｋと公開鍵ｐｋの組を生成する。次いで、証明者は、鍵生成アルゴリズムＧｅｎを用いて生成した秘密鍵ｓｋと公開鍵ｐｋの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムＰを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムＰを利用し、対話プロトコルの中で秘密鍵ｓｋを保有している証拠を検証者に提示する。
【００３０】
一方、検証者は、検証者アルゴリズムＶを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という２つのエンティティ、及び、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶという３つのアルゴリズムにより構成される。
【００３１】
なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムＶを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図１２に示した通りである。つまり、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶは、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、リムーバブル記録媒体９２８などに記録されたプログラムに基づいてＣＰＵ９０２などにより実行される。
【００３２】
（鍵生成アルゴリズムＧｅｎ）
鍵生成アルゴリズムＧｅｎは、証明者により利用される。鍵生成アルゴリズムＧｅｎは、証明者に固有の秘密鍵ｓｋと公開鍵ｐｋとの組を生成するアルゴリズムである。鍵生成アルゴリズムＧｅｎにより生成された公開鍵ｐｋは公開される。そして、公開された公開鍵ｐｋは、検証者により利用される。一方、鍵生成アルゴリズムＧｅｎにより生成された秘密鍵ｓｋは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵ｓｋは、公開鍵ｐｋに対応する秘密鍵ｓｋを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムＧｅｎは、セキュリティパラメータ１λ（λは０以上の整数）を入力とし、秘密鍵ｓｋと公開鍵ｐｋを出力するアルゴリズムとして、下記の式（１）のように表現される。
【００３３】
【数１】
2014068140.tif 000003
【００３４】
（証明者アルゴリズムＰ）
証明者アルゴリズムＰは、証明者により利用される。証明者アルゴリズムＰは、公開鍵ｐｋに対応する秘密鍵ｓｋを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムＰは、秘密鍵ｓｋと公開鍵ｐｋとを入力とし、対話プロトコルを実行するアルゴリズムである。
【００３５】
（検証者アルゴリズムＶ）
検証者アルゴリズムＶは、検証者により利用される。検証者アルゴリズムＶは、対話プロトコルの中で、公開鍵ｐｋに対応する秘密鍵ｓｋを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムＶは、公開鍵ｐｋを入力とし、対話プロトコルの実行結果に応じて０又は１（１ｂｉｔ）を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムＶが０を出力した場合には証明者が不正なものであると判断し、１を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムＶは、下記の式（２）のように表現される。
【００３６】
【数２】
2014068140.tif 000004
【００３７】
上記の通り、意味のある公開鍵認証を実現するには、対話プロトコルが健全性及び零知識性という２つの条件を満たしている必要がある。しかし、証明者が秘密鍵ｓｋを保有していることを証明するためには、証明者が秘密鍵ｓｋに依存した手続きを実行し、その結果を検証者に通知した上で、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵ｓｋに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、秘密鍵ｓｋの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶを巧妙に設計する必要がある。
【００３８】
以上、公開鍵認証方式のアルゴリズムについて、その概要を説明した。
【００３９】
［１−２：ｎパスの公開鍵認証方式］
次に、図２を参照しながら、ｎパスの公開鍵認証方式について説明する。図２は、ｎパスの公開鍵認証方式について説明するための説明図である。
【００４０】
上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵ｐｋに対応する秘密鍵ｓｋを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という２つの条件を満たす必要がある。そのため、対話プロトコルの中では、図２に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらｎ回の情報交換を行う。
【００４１】
ｎパスの公開鍵認証方式の場合、証明者アルゴリズムＰを用いて証明者により処理（工程＃１）が実行され、情報Ｔ１が検証者に送信される。次いで、検証者アルゴリズムＶを用いて検証者により処理（工程＃２）が実行され、情報Ｔ２が証明者に送信される。さらに、ｋ＝３〜ｎについて処理の実行及び情報Ｔｋの送信が順次行われ、最後に処理（工程＃ｎ＋１）が実行される。このように、情報がｎ回送受信される方式のことを「ｎパス」の公開鍵認証方式と呼ぶ。
【００４２】
以上、ｎパスの公開鍵認証方式について説明した。
【００４３】
＜２：３パスの公開鍵認証方式に係るアルゴリズムの構成＞
以下、３パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、３パスの公開鍵認証方式のことを「３パス方式」と呼ぶ場合がある。
【００４４】
［２−１：具体的なアルゴリズムの構成例（図３）］
まず、図３を参照しながら、３パス方式に係る具体的なアルゴリズムの構成例について紹介する。図３は、３パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵ｐｋの一部として２次多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））を利用する場合について考える。但し、２次多項式ｆｉ（ｘ）は、下記の式（６）のように表現されるものとする。また、ベクトル（ｘ１，…，ｘｎ）をｘと表記し、２次多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））を多変数多項式Ｆ（ｘ）と表記することにする。
【００４５】
【数３】
2014068140.tif 000005
【００４６】
また、２次多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））は、下記の式（７）のように表現することができる。また、Ａ１，…，Ａｍは、ｎ×ｎ行列である。さらに、ｂ１，…，ｂｍはそれぞれｎ×１ベクトルである。
【００４７】
【数４】
2014068140.tif 000006
【００４８】
この表現を用いると、多変数多項式Ｆは、下記の式（８）及び式（９）のように表現することができる。この表現が成り立つことは、下記の式（１０）から容易に確認することができる。
【００４９】
【数５】
2014068140.tif 000007
【００５０】
このようにＦ（ｘ＋ｙ）をｘに依存する第１の部分と、ｙに依存する第２の部分と、ｘ及びｙの両方に依存する第３の部分とに分けたとき、第３の部分に対応する項Ｇ（ｘ，ｙ）は、ｘ及びｙについて双線形になる。以下、項Ｇ（ｘ，ｙ）を双線形項と呼ぶ場合がある。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
【００５１】
例えば、ベクトルｔ０∈Ｋｎ、ｅ０∈Ｋｍを用いて、多変数多項式Ｆ（ｘ＋ｒ）のマスクに利用する多変数多項式Ｆ１（ｘ）をＦ１（ｘ）＝Ｇ（ｘ，ｔ０）＋ｅ０と表現する。この場合、多変数多項式Ｆ（ｘ＋ｒ０）とＦ１（ｘ）との和は、下記の式（１１）のように表現される。ここで、ｔ１＝ｒ０＋ｔ０、ｅ１＝Ｆ（ｒ０）＋ｅ０とおけば、多変数多項式Ｆ２（ｘ）＝Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ）は、ベクトルｔ１∈Ｋｎ、ｅ１∈Ｋｍにより表現することができる。そのため、Ｆ１（ｘ）＝Ｇ（ｘ，ｔ０）＋ｅ０に設定すれば、Ｋｎ上のベクトル及びＫｍ上のベクトルを用いてＦ１及びＦ２を表現できるようになり、通信に必要なデータサイズの少ない効率的なアルゴリズムを実現することが可能になる。
【００５２】
【数６】
2014068140.tif 000008
【００５３】
なお、Ｆ２（或いはＦ１）からｒ０に関する情報が一切漏れることはない。例えば、ｅ１及びｔ１（或いはｅ０及びｔ０）を与えられても、ｅ０及びｔ０（或いはｅ１及びｔ１）を知らない限り、ｒ０の情報を一切知ることはできない。従って、零知識性が担保される。以下、上記の論理に基づいて構築された３パス方式のアルゴリズムについて説明する。ここで説明する３パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶにより構成される。
【００５４】
（鍵生成アルゴリズムＧｅｎ）
鍵生成アルゴリズムＧｅｎは、環Ｋ上で定義されるｍ本の多変数多項式ｆ１（ｘ１，…，ｘｎ），…，ｆｍ（ｘ１，…，ｘｎ）、及びベクトルｓ＝（ｓ１，…，ｓｎ）∈Ｋｎを生成する。次に、鍵生成アルゴリズムＧｅｎは、ｙ＝（ｙ１，…，ｙｍ）←（ｆ１（ｓ），…，ｆｍ（ｓ））を計算する。そして、鍵生成アルゴリズムＧｅｎは、（ｆ１（ｘ１，…，ｘｎ），…，ｆｍ（ｘ１，…，ｘｎ），ｙ）を公開鍵ｐｋに設定し、ｓを秘密鍵に設定する。
【００５５】
（証明者アルゴリズムＰ、検証者アルゴリズムＶ）
以下、図３を参照しながら、対話プロトコルの中で証明者アルゴリズムＰが実行する処理及び検証者アルゴリズムＶが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵ｓの情報を検証者に一切漏らさずに、「自身がｙ＝Ｆ（ｓ）を満たすｓを知っていること」を検証者に示す。一方、検証者は、証明者がｙ＝Ｆ（ｓ）を満たすｓを知っているか否かを検証する。なお、公開鍵ｐｋは、検証者に公開されているものとする。また、秘密鍵ｓは、証明者により秘密に管理されているものとする。以下、図３に示したフローチャートに沿って説明を進める。
【００５６】
工程＃１：
図３に示すように、まず、証明者アルゴリズムＰは、ランダムにベクトルｒ０，ｔ０∈Ｋｎ及びｅ０∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。さらに、証明者アルゴリズムＰは、ｔ１←ｒ０−ｔ０を計算する。次いで、証明者アルゴリズムＰは、ｅ１←Ｆ（ｒ０）−ｅ０を計算する。
【００５７】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ１，Ｇ（ｔ０，ｒ１）＋ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ１←Ｈ（ｔ０，ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ２←Ｈ（ｔ１，ｅ１）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１，ｃ２）は、検証者アルゴリズムＶに送られる。
【００５８】
工程＃２：
メッセージ（ｃ０，ｃ１，ｃ２）を受け取った検証者アルゴリズムＶは、３つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す３つの数値｛０，１，２｝の中から１つの数値を選択し、選択した数値を要求Ｃｈに設定する。この要求Ｃｈは証明者アルゴリズムＰに送られる。
【００５９】
工程＃３：
要求Ｃｈを受け取った証明者アルゴリズムＰは、受け取った要求Ｃｈに応じて検証者アルゴリズムＶに送る返答Ｒｓｐを生成する。Ｃｈ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ０，ｔ１，ｅ１）を生成する。Ｃｈ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ１，ｔ０，ｅ０）を生成する。Ｃｈ＝２の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ１，ｔ１，ｅ１）を生成する。工程＃３で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【００６０】
工程＃４：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【００６１】
Ｃｈ＝０の場合、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｒ０−ｔ１，Ｆ（ｒ０）−ｅ１）の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ２＝Ｈ（ｔ１，ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００６２】
Ｃｈ＝１の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ１，Ｇ（ｔ０，ｒ１）＋ｅ０）の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｔ０，ｅ０）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００６３】
Ｃｈ＝２の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ１，ｙ−Ｆ（ｒ１）−Ｇ（ｔ１，ｒ１）−ｅ１）の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ２＝Ｈ（ｔ１，ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００６４】
以上、３パス方式に係る効率的なアルゴリズムの構成例について説明した。
【００６５】
＜３：本実施形態のシステムの構成例＞
［３−１：パスワード認証と公開鍵認証について］
以上説明した公開鍵認証の他に、ＩＤとパスワードを使用する通常のパスワード認証が広く用いられている。パスワード認証においては、例えば、１人のユーザーがオンラインショッピングとインターネットバンキングという２つのサービスを利用する場合、ユーザは２つのサービスに対して異なるＩＤとパスワードを用いてログインを行う。このように、一般的なパスワード認証では、ユーザは各サービスに別々のパスワードを登録するため、各サービスのＩＤ・パスワードを記したリストを管理する必要があった。
【００６６】
ところが、上記で説明した公開鍵認証方式では、ユーザは自身が保有する秘密鍵ｓｋに対応する同一の公開鍵ｐｋを各サービスに登録することができるため、ユーザは秘密鍵ｓｋを１つ保持するだけで複数のサービスを利用することができる。なお、秘密鍵ｓｋと公開鍵ｐｋは対応しており、ＭＱ関数をｆとすると、ｐｋ＝ｆ（ｓｋ）の関係が成立する。また、上述のような公開鍵認証方式では、他の公開鍵技術でシステムを構成する場合と比べると、80-bit  Securityの場合で鍵ストレージサイズを１／２〜１／１０程度に縮小することができる。従って、公開鍵認証方式によれば、サービス毎に公開鍵ｐｋを登録する必要がなく、鍵ストレージサイズも最小限に抑えることが可能である。
【００６７】
図４は、パスワード認証と公開鍵認証との相違を示す模式図である。図４に示すように、パスワード認証においては、ユーザはｎ個のサービスＳ１〜Ｓｎのそれぞれについて、ＩＤ１，パスワード１（ｐａｓｓ１）、ＩＤ２，パスワード２（ｐａｓｓ２）、・・・、ＩＤｎ，パスワードｎ（ｐａｓｓｎ）を記憶しておく必要がある。一方、公開鍵認証においては、各サービスに共通の公開鍵ｐｋを用いることができる。共通の公開鍵ｐｋは、ユーザの秘密鍵ｓｋに対応し、ＭＱ関数に秘密鍵ｓｋを代入して得られる値が公開鍵ｐｋとなる。従って、ユーザは１つの秘密鍵ｓｋを保持するのみで、ｎ個のサービスＳ１〜Ｓｎを利用することが可能である。これにより、パスワード認証のようにサービス毎にＩＤｎとパスワードｎ（ｐａｓｓｎ）を管理する必要がなく、ユーザの負荷を低減することが可能となる。
【００６８】
［３−２：異なるユーザ間で公開鍵が一致する場合について］
以上のように、公開鍵認証を用いることによって、異なるサービス間で共通の公開鍵ｐｋを使用することができる。一方、異なるサービス間で共通の公開鍵ｐｋを用いると、異なるユーザ同士が同一の公開鍵ｐｋを設定してしまう可能性がある確率で存在する。例えば、ＭＱ認証の鍵セキュリティ強度を８０−ｂｉｔとし、同一のＭＱ関数ｆを使用するという仮定の下で、２４０個の公開鍵ｐｋを集めると、１／２の確率でｐｋが一致するペアが１組存在する。これは、ＭＱ認証に固有のものではなく、公開鍵の鍵長８０ｂｉｔと短いことから生じるものである。特に、秘密鍵ｓｋの分布が一様ではなく偏っている場合は、秘密鍵ｓｋに対応する公開鍵ｐｋの分布も偏るため、２４０個より少ない個数の公開鍵ｐｋを集めた場合でも１／２の確率で公開鍵ｐｋが一致するペアが１組存在する。
【００６９】
この状態を図５に基づいて説明すると、ｎ個のサービスで同一のＭＱ関数ｆを使用する場合、ユーザ数（＝ｍ）だけ秘密鍵ｓｋｍと公開鍵ｐｋｍの組み合わせが存在する。図５において、ユーザ数をｍ、サービスＳの数をｎとすると、ユーザ１、ユーザ２、ユーザ３、・・・、ユーザｍは、それぞれ秘密鍵ｓｋ１，ｓｋ２，ｓｋ３，・・・，ｓｋｍを保持する。サービスＳ１には、ユーザ１に対応するＩＤ１１、公開鍵ｐｋ１（＝ｆ（ｓｋ１））が登録される。また、サービスＳ１には、ユーザ２に対応するＩＤ１２、公開鍵ｐｋ２（＝ｆ（ｓｋ２））、ユーザ３に対応するＩＤ１３、公開鍵ｐｋ３（＝ｆ（ｓｋ３））、・・・ユーザｍに対応するＩＤ１ｍ、公開鍵ｐｋｍ（＝ｆ（ｓｋｍ））が登録される。同様にして、サービスＳｎには、ユーザ１に対応するＩＤｎ１、公開鍵ｐｋ１（＝ｆ（ｓｋ１））、ユーザ２に対応するＩＤｎ２、公開鍵ｐｋ２（＝ｆ（ｓｋ２））、・・・、ユーザｍに対応するＩＤｎｍ、公開鍵ｐｋｍ（＝ｆ（ｓｋｍ））が登録される。このような状況下では、ユーザ数ｍが２４０個に達すると、１／２の確率で同じ公開鍵が存在してしまうことになる。
【００７０】
図６は、一例として、あるサービスＳ１から公開鍵ｐｋが漏えいするケースを示す模式図である。仮にユーザ２の公開鍵ｐｋ２とユーザｍの公開鍵ｐｋｍが上述した確率で同一（ｐｋ２=ｐｋｍ）であるとすると、公開鍵と秘密鍵は一対一で対応するため、ユーザ２とユーザｍは同一の秘密鍵ｓｋを使用していることが分かる。この場合、ユーザ２とユーザｍはＳ１以外のサービスにも同じ公開鍵ｐｋ２，ｐｋｍ（但し、ｐｋ２=ｐｋｍ）を登録しているので、ＩＤが分かれば、ユーザ２とユーザｍは、同一の秘密鍵ｓｋを使用して互いに全てのサービスＳ１〜Ｓｎにアクセスできる状態になってしまう。例えば、ユーザ２が悪意を有していた場合、ユーザ２はユーザｍのＩＤを使用して、ユーザｍになりすました状態で秘密鍵ｓｋを使用してサービスＳ１〜Ｓｎにアクセスできてしまう。
【００７１】
［３−３：本実施形態に係るシステムの概要］
以上のような鍵の漏洩に鑑み、本実施形態では、サービスＳ１，Ｓ２，・・・，Ｓｎ側が提供する乱数ｒｎｄ１，・・・，ｒｎｄｎを利用して、ユーザ側でサービスＳ１，Ｓ２，・・・，Ｓｎ毎に異なる秘密鍵を生成する。サービスＳ１，Ｓ２，・・・，Ｓｎ毎に秘密鍵を生成することで、ユーザは、サービス毎に異なる秘密鍵、公開鍵を使用することができる。
【００７２】
図７は、本実施形態のシステムの概要を示す模式図である。最初に、ユーザ側のクライアント端末１００は、マスタ秘密鍵ｍｓｋを作る。そして、サービスＳｉ（ｉ＝１〜ｎ）のサーバ（外部装置）２００から送付された乱数ｒｎｄｉとマスタ秘密鍵ｍｓｋのハッシュ値（ハッシュ関数）を計算して、秘密鍵ｓｋｉを得る。すなわち、ｓｋｉ＝Ｈ（ｍｓｋ,ｒｎｄｉ）となる。そして、クライアント端末１００は、ｐｋｉ＝ｆ（ｓｋｉ）の演算により公開鍵ｐｋｉを導出してサービスＳｉに送付する。これにより、サービスＳｉへの公開鍵ｐｋｉの登録が行われる。サービスＳｉ側では、ＩＤｉ、公開鍵ｐｋｉ、及び乱数ｒｎｄｉのセット（ＩＤｉ，ｐｋｉ＝ｆ（ｓｋｉ），ｒｎｄｉ）を保持しておく。
【００７３】
以上の処理をサービスＳ１，Ｓ２，・・・，Ｓｎについて行うことで、サービスＳ１，Ｓ２，・・・，Ｓｎに対応する各サーバ２００は、（ＩＤｉ，ｐｋｉ＝ｆ（ｓｋｉ），ｒｎｄｉ）を保持する（但し、ｉ＝１〜ｎ）。
【００７４】
認証を行う際には、サービスＳｉから登録時に用いた乱数ｒｎｄｉをユーザに送付する。ユーザのクライアント端末１００では、サービス登録時と同様にして秘密鍵ｓｋｉを生成して、図１〜図３で説明したＭＱ認証方式を開始する。クライアント端末１００は証明者に対応し、サーバ２００は検証者に対応する。サーバ２００の認証が得られれば、クライアント端末１００は、サービスＳｉを提供するサーバ２００へアクセス可能となる。本実施形態によれば、認証毎に各サービスＳｉに対応する秘密鍵ｓｋｉを生成するため、クライアント端末１００側で保持するマスタ秘密鍵ｍｓｋは１つで済むことになる。
【００７５】
これにより、図８に示すように、サービスＳ１，Ｓ２，・・・，Ｓｎ毎に異なる公開鍵ｐｋ１，ｐｋ２，・・・，ｐｋｎを登録するため、例えば、サービスＳ１において、異なるユーザに対して同じ公開鍵ペアが存在しており、その公開鍵が漏洩したとしても、マスタ秘密鍵ｍｓｋが漏洩することを抑止できる。各クライアント端末１００は、マスタ秘密鍵ｍｓｋから秘密鍵ｓｋを生成するため、図６で説明したような、なりすましによるアクセスは不可能である。図８において、仮にサービスＳ１についてのユーザ２及びユーザｍの公開鍵が同一（ｐｋ１２＝ｐｋ１ｍ）であるとすると、Ｈ（ｍｓｋ２,ｒｎｄ１２）＝Ｈ（ｍｓｋｍ,ｒｎｄ１ｍ）であることが分かる。乱数ｒｎｄ１２，ｒｎｄ１ｍは秘密ではないが、ハッシュ関数の一方向性の特徴から、ユーザ２及びユーザｍの互いのマスタ鍵ｍｓｋ２,ｍｓｋｍが判別されることはない。
【００７６】
更に、本実施形態によれば、ユーザが質の悪い秘密鍵生成関数ＧｅｎＫｅｙを使った場合などにマスタ秘密鍵ｍｓｋの値に偏りが生じたとしても、マスタ秘密鍵ｍｓｋと乱数ｒｎｄとのハッシュ値から秘密鍵ｓｋを生成する。乱数ｒｎｄはサーバ２００側で生成され、一様に分布する乱数であるため、仮にマスタ秘密鍵ｍｓｋの安全性が比較的低かったとしても、安全性が高い秘密鍵ｓｋを生成することが可能である。
【００７７】
［３−４：本実施形態の処理フロー］
図９は、本実施形態の処理フローを示す模式図であって、ユーザ側のクライアント端末１００とサービスプロバイダ側のサーバ２００との間で行われる処理を示している。このうち、ステップＳ１０〜Ｓ１８は、公開鍵の登録フェイズを示している。また、ステップＳ２０〜Ｓ２８は、認証フェイズを示している。
【００７８】
登録フェイズでは、先ずステップＳ１０において、クライアント端末１００がサーバ２００へＩＤを送信する。次のステップＳ１１では、サーバ２００が乱数ｒｎｄを生成する。次のステップＳ１２では、サーバ２００がクライアント端末１００へ乱数ｒｎｄを送信する。
【００７９】
次のステップＳ１４では、クライアント端末１００が秘密鍵ｓｋと公開鍵ｐｋの鍵ペアを作成する。ここで、マスタ秘密鍵ｍｓｋが生成されていない場合は、秘密鍵生成関数ＧｅｎＫｅｙ（１ｋ）からマスタ秘密鍵ｍｓｋを生成する。秘密鍵生成関数ＧｅｎＫｅｙ（１ｋ）は、乱数列から鍵長の長さｋだけを抽出することで、マスタ鍵ｍｓｋを生成する。マスタ秘密鍵ｍｓｋと乱数ｒｎｄのハッシュ値を演算して秘密鍵ｓｋを生成し（ｓｋ＝Ｈ（ｍｓｋ,ｒｎｄ））、秘密鍵ｓｋをＭＱ関数ｆに代入して公開鍵ｐｋを生成する（ｐｋ＝ｆ（ｓｋ））。次のステップＳ１６では、クライアント端末１００が、公開鍵ｓｋをサーバ２００へ送信する。次のステップＳ１８では、サーバ２００がＩＤ，ｐｋ，ｒｎｄのセット（ＩＤ，ｐｋ，ｒｎｄ）を保存する。
【００８０】
認証フェイズでは、ステップＳ２０において、クライアント端末１００がサーバ２００へＩＤを送信する。次のステップＳ２２では、サーバ２００が、保存されたＩＤ，ｐｋ，ｒｎｄのセットの中から、ステップＳ２０で送信されたＩＤに対応するｒｎｄを抽出する。次のステップＳ２４では、抽出したｒｎｄをクライアント端末１００へ送信する。次のステップＳ２６では、クライアント端末１００が秘密鍵ｓｋを計算する。ここでは、マスタ秘密鍵ｍｓｋとステップＳ２４で送信された乱数ｒｎｄのハッシュ値をとることにより、秘密鍵ｓｋを計算する（ｓｋ＝Ｈ（ｍｓｋ，ｒｎｄ））。次のステップＳ２８では、図１〜図３で説明した手法によりＭＱ認証を行う。この際、クライアント端末１００は証明者に対応し、サーバ２００は検証者に対応する。
【００８１】
［３−５：本実施形態のシステムの構成例］
図１０は、本実施形態のシステムの構成例を示す模式図である。図１０に示すように、クライアント端末１００は、通信部１０２、マスタ鍵用乱数発生部１０４、マスタ鍵生成部１０５、ＭＱ認証部１０６、秘密鍵生成部１０８、公開鍵生成部１１０、マスタ鍵保持部１１２、秘密鍵保持部１１４、を有して構成される。また、サーバ２００は、認証用乱数発生部２０２、通信部２０４、ＭＱ認証部２０６、記憶部２０８を有して構成される。
【００８２】
クライアント端末１００の通信部１０２は、サーバ２００の通信部２０４との間で情報の送受信を行う。マスタ鍵用乱数発生部１０４は、マスタ秘密鍵ｍｓｋを生成するための乱数を発生させる。マスタ鍵生成部１０５は、マスタ鍵用乱数発生部１０４が発生させた乱数列から鍵長の長さｋだけを抽出することで、マスタ鍵ｍｓｋを生成する。ｋの値は、ＭＱ公開鍵方式における秘密鍵のビット長と同じ、若しくは、それ以上の値とすることができる。ここでは、ｋの値はＭＱ公開鍵方式における秘密鍵のサイズと同じ“８０”とする。なお、サーバ側から送られてくる乱数とのハッシュ値を計算して秘密鍵ｓｋを生成するため、クライアント端末１００のマスタ鍵用乱数発生部１０４は高品質なものでなくても構わない。ＭＱ認証部１０６は、図１〜図３で説明したＭＱ認証処理を行う。具体的には、ＭＱ認証部１０６は、図３に示した工程＃１、工程＃３を含む処理を行う。秘密鍵生成部１０８は、サーバ２００から送られた乱数ｒｎｄとマスタ秘密鍵ｍｓｋとから秘密鍵ｓｋを生成する。ここで、マスタ鍵ｍｓｋを生成する際のｋの値が大きいほど、エントロピーが高い秘密鍵ｓｋを生成することができる。公開鍵生成部１１０は、ＭＱ関数ｆと秘密鍵ｓｋとから公開鍵ｐｋを生成する。マスタ鍵保持部１０８は、生成されたマスタ秘密鍵ｍｓｋを保持（記憶）する。
【００８３】
サーバ２００の通信部２０４は、クライアント端末１００の通信部１０２との間で情報の送受信を行う。認証用乱数発生部２０２は、認証のための乱数ｒｎｄを発生させる。乱数ｒｎｄは、クライアント端末１００において秘密鍵ｓｋを生成する際に用いるため、秘密鍵ｓｋが偏った値とならないように、認証用乱数発生部２０２はクライアント端末１００のマスタ鍵用乱数発生部１０４よりも高品質なものであることが望ましい。ＭＱ認証部２０６は、上述したＭＱ認証処理を行う。具体的には、ＭＱ認証部２０６は、図３に示した工程＃２、工程＃４を含む処理を行う。記憶部２０８は、ＩＤ，ｐｋ，ｒｎｄのセット（ＩＤ，ｐｋ，ｒｎｄ）を保存する。
【００８４】
なお、図１０に示す各構成要素は、ハードウェア（回路）、またはＣＰＵなどの中央演算処理装置とこれを機能させるためのプログラム（ソフトウェア）によって構成されることができる。この場合に、そのプログラムは、各装置（クライアント端末１００、サーバ２００）が備えるメモリ、または外部から各装置に接続される外部メモリ等の記録媒体に格納されることができる。
【００８５】
［３−６：本実施形態の変形例について］
上述した説明では、クライアント端末１００が認証を行う毎にマスタ秘密鍵ｍｓｋから秘密鍵ｓｋを生成することとしたが、クライアント端末１００は、一度生成した秘密鍵ｓｋを保存しても良い。この場合、図９のステップＳ１４で秘密鍵ｓｋを生成した後、図１０の秘密鍵保持部１１４に秘密鍵ｓｋを保持する。秘密鍵ｓｋはサービス毎に異なるため、秘密鍵保持部１１４は、サービスＳ毎に秘密鍵ｓｋを保持する。これにより、図９のステップＳ２０〜Ｓ１８の処理が不要となり、認証の際にはステップＳ２８のＭＱ認証を直ちに行うことが可能となる。従って、認証処理を簡素化することができる。
【００８６】
また、上述した実施形態の変形例として、マスタ秘密鍵ｍｓｋの代わりに、パスワード（ｐａｓｓ）を利用することができる。この場合、図１１に示すように、クライアント端末１００は、マスタ秘密鍵ｍｓｋを記憶することなく、パスワードｐａｓｓと乱数ｒｎｄとのハッシュ値から秘密鍵ｓｋを生成する。処理フローとしては、図９のステップＳ１４ではマスタ秘密鍵ｍｓｋの生成を行わずに、図１０の秘密鍵生成部１０８がパスワードｐａｓｓと乱数ｒｎｄとのハッシュ値から秘密鍵ｓｋを生成する。そして、認証の際には、図９のステップＳ２６において、パスワードｐａｓｓと乱数ｒｎｄとのハッシュ値から秘密鍵ｓｋを生成する。この場合においても、秘密鍵ｓｋをその都度生成することなく、一度生成した秘密鍵ｓｋを秘密鍵保持部１１４に保持しても良い。なお、サーバ２００側の処理は上述した実施形態と同様である。
【００８７】
＜５：ハードウェア構成例（図１２）＞
上記の各アルゴリズムは、例えば、図１２に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図１２に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、ＰＨＳ、ＰＤＡ等の携帯情報端末、ゲーム機、接触式又は非接触式のＩＣチップ、接触式又は非接触式のＩＣカード、又は種々の情報家電がこれに含まれる。但し、上記のＰＨＳは、Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ−ｐｈｏｎｅ  Ｓｙｓｔｅｍの略である。また、上記のＰＤＡは、Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔの略である。
【００８８】
図１２に示すように、このハードウェアは、主に、ＣＰＵ９０２と、ＲＯＭ９０４と、ＲＡＭ９０６と、ホストバス９０８と、ブリッジ９１０と、を有する。さらに、このハードウェアは、外部バス９１２と、インターフェース９１４と、入力部９１６と、出力部９１８と、記憶部９２０と、ドライブ９２２と、接続ポート９２４と、通信部９２６と、を有する。但し、上記のＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。また、上記のＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略である。そして、上記のＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。
【００８９】
ＣＰＵ９０２は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、又はリムーバブル記録媒体９２８に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ＲＯＭ９０４は、ＣＰＵ９０２に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ９０６には、例えば、ＣＰＵ９０２に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【００９０】
これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス９０８を介して相互に接続される。一方、ホストバス９０８は、例えば、ブリッジ９１０を介して比較的データ伝送速度が低速な外部バス９１２に接続される。また、入力部９１６としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部９１６としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。
【００９１】
出力部９１８としては、例えば、ＣＲＴ、ＬＣＤ、ＰＤＰ、又はＥＬＤ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のＣＲＴは、Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅの略である。また、上記のＬＣＤは、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙの略である。そして、上記のＰＤＰは、Ｐｌａｓｍａ  ＤｉｓｐｌａｙＰａｎｅｌの略である。さらに、上記のＥＬＤは、Ｅｌｅｃｔｒｏ−Ｌｕｍｉｎｅｓｃｅｎｃｅ  Ｄｉｓｐｌａｙの略である。
【００９２】
記憶部９２０は、各種のデータを格納するための装置である。記憶部９２０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略である。
【００９３】
ドライブ９２２は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９２８に記録された情報を読み出し、又はリムーバブル記録媒体９２８に情報を書き込む装置である。リムーバブル記録媒体９２８は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙメディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９２８は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。但し、上記のＩＣは、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略である。
【００９４】
接続ポート９２４は、例えば、ＵＳＢポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９３０を接続するためのポートである。外部接続機器９３０は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。但し、上記のＵＳＢは、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略である。また、上記のＳＣＳＩは、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅの略である。
【００９５】
通信部９２６は、ネットワーク９３２に接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ用の通信カード、光通信用のルータ、ＡＤＳＬ用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部９２６に接続されるネットワーク９３２は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のＬＡＮは、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略である。また、上記のＷＵＳＢは、Ｗｉｒｅｌｅｓｓ  ＵＳＢの略である。そして、上記のＡＤＳＬは、Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅの略である。
【００９６】
以上で述べた技術内容は、例えば、ＰＣ、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、１台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
【００９７】
以上説明したように本実施形態によれば、サーバ２００からクライアント端末１００へ提供した乱数と秘密鍵の元となる情報（マスタ秘密鍵ｍｓｋまたはパスワードｐａｓｓ）とから秘密鍵ｓｋを生成し、生成した秘密鍵ｓｋから公開鍵ｐｋを生成する。従って、仮にユーザ間で公開鍵ｐｋが一致するような事態が生じたしたとしても、秘密鍵の元となる情報が漏洩することを確実に抑止することが可能となる。これにより、悪意のあるユーザによる不正アクセスを確実に抑止することができる。
【００９８】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００９９】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する秘密鍵生成部と、
前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する公開鍵生成部と、
前記公開鍵を前記外部装置へ送信する送信部と、
前記秘密鍵を用いて前記外部装置と認証を行う認証処理部と、
を備える、情報処理装置。
（２）前記所定値は、固定値である、前記（１）に記載の情報処理装置。
（３）前記所定値は、入力されたパスワードである、前記（１）に記載の情報処理装置。
（４）  前記秘密鍵生成部は、前記外部装置と認証を行う度に、受信した前記乱数から前記秘密鍵を生成する、前記（１）〜（３）のいずれかに記載の情報処理装置。
（５）生成した前記秘密鍵を保持する秘密鍵保持部を備える、前記（１）〜（３）のいずれかに記載の情報処理装置。
（６）前記公開鍵生成部は、前記秘密鍵に基づいて、前記サービスを提供する前記外部装置毎に異なる前記公開鍵を生成する、前記（１）〜（５）のいずれかに記載の情報処理装置。
（７）前記公開鍵生成部は、ＭＱ関数と前記秘密鍵とから前記公開鍵を生成する、前記（１）〜（６）のいずれかに記載の情報処理装置。
（８）前記秘密鍵生成部は、前記乱数と前記所定値にハッシュ演算を行うことで前記秘密鍵を生成する、前記（１）〜（７）のいずれかに記載の情報処理装置。
（９）前記所定値として前記秘密鍵とは異なるマスタ秘密鍵を用いる、前記（２）に記載の情報処理装置。
（１０）サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成することと、
前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成することと、
前記公開鍵を前記外部装置へ送信することと、
前記秘密鍵を用いて前記外部装置と認証を行うことと、
を備える、情報処理方法。
（１１）サービスを提供する外部装置から受信した乱数と所定値とから秘密鍵を生成する手段、
前記秘密鍵に基づいて、複数の前記サービスで同一に設定された関数を使用して公開鍵を生成する手段、
前記公開鍵を前記外部装置へ送信する手段、
前記秘密鍵を用いて前記外部装置と認証を行う手段、
としてコンピュータを機能させるためのプログラム。
【符号の説明】
【０１００】
１００    クライアント端末
１０２    通信部
１０６    ＭＱ認証部
１０８    秘密鍵生成部
１１０    公開鍵生成部
１１４    秘密鍵保持部
【図１】
2014068140.tif 000009
【図２】
2014068140.tif 000010
【図３】
2014068140.tif 000011
【図４】
2014068140.tif 000012
【図５】
2014068140.tif 000013
【図６】
2014068140.tif 000014
【図７】
2014068140.tif 000015
【図８】
2014068140.tif 000016
【図９】
2014068140.tif 000017
【図１０】
2014068140.tif 000018
【図１１】
2014068140.tif 000019
【図１２】
2014068140.tif 000020