(57)【特許請求の範囲】
【請求項１】
ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する入力手段と、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する部分秘密鍵生成手段と、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する秘密鍵生成手段と、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、
を備えたことを特徴とする鍵生成装置。
【請求項２】
同一の鍵長の秘密鍵、公開鍵を複数生成する場合に、インデックス番号を前記入力手段に入力することを特徴とする請求項１に記載の鍵生成装置。
【請求項３】
前記一方向性関数がハッシュ関数であることを特徴とする請求項１または請求項２に記載の鍵生成装置。
【請求項４】
前記入力手段、前記部分秘密鍵生成手段、前記秘密鍵生成手段を耐タンパデバイス内に設けたことを特徴とする請求項１または請求項２に記載の鍵生成装置。
【請求項５】
前記請求項１から請求項４に記載の鍵生成装置が生成した公開鍵を入力する公開鍵入力手段と、
該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値
算出手段と、
前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、
を備えたことを特徴とする証明書生成装置。
【請求項６】
鍵生成装置と、証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムであって、
前記鍵生成装置が、
ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する入力手段と、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する部分秘密鍵生成手段と、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する秘密鍵生成手段と、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、
を備え、
前記証明書生成装置が、
前記鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、
前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、
前記公開鍵証明書をユーザ端末に送信する公開鍵証明書送信手段と、
を備え、
前記サービス提供サーバが、
前記ユーザ端末から前記公開鍵証明書を受信する受信手段と、
該受信した公開鍵証明書の正当性を検証する検証手段と、
前記ユーザ端末に送付するデータを、前記サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する暗号化手段と、
該暗号化したデータと前記選択した公開鍵の情報を前記ユーザ端末に送信するデータ送信手段と、
を備え、
前記ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化することを特徴とするサービス提供システム。
【請求項７】
入力手段、部分秘密鍵生成手段、秘密鍵生成手段、および公開鍵生成手段を備える鍵生成装置が、サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成方法であって、
前記入力手段が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、
前記部分秘密鍵生成手段が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、
前記秘密鍵生成手段が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、
前記公開鍵生成手段が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、
を備えたことを特徴とする鍵生成方法。
【請求項８】
公開鍵入力手段、ハッシュ値算出手段、署名手段、および格納手段を備える証明書生成装置が、前記請求項７により生成された鍵に基づいて、証明書を生成する証明書生成方法であって、
前記公開鍵入力手段が、前記請求項７により生成された公開鍵を入力する第１のステップと、
前記ハッシュ値算出手段が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第２のステップと、
前記署名手段が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第３のステップと、
前記格納手段が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第４のステップと、
を備えたことを特徴とする証明書生成方法。
【請求項９】
鍵生成装置と、証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法であって、
前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、
前記鍵生成装置が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、
前記鍵生成装置が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、
前記鍵生成装置が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、
前記証明書生成装置が、前記鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第５のステップと、
前記証明書生成装置が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第６のステップと、
前記証明書生成装置が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第７のステップと、
前記証明書生成装置が、前記公開鍵証明書をユーザ端末に送信する第８のステップと、
前記サービス提供サーバが、前記ユーザ端末から前記公開鍵証明書を受信する第９のステップと、
前記サービス提供サーバが、該受信した公開鍵証明書の正当性を検証する第１０のステップと、
前記ユーザ端末に送付するデータを、前記サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する第１１のステップと、
前記サービス提供サーバが、該暗号化したデータと前記選択した公開鍵の情報を前記ユーザ端末に送信する第１２のステップと、
前記ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第１３のステップと、
を備えることを特徴とするサービス提供方法。
【請求項１０】
入力手段、部分秘密鍵生成手段、秘密鍵生成手段、および公開鍵生成手段を備え、サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成装置における鍵生成方法をコンピュータに実行させるためのプログラムであって、
前記入力手段が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、
前記部分秘密鍵生成手段が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、
前記秘密鍵生成手段が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、
前記公開鍵生成手段が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１１】
公開鍵入力手段、ハッシュ値算出手段、署名手段、および格納手段を備え、前記請求項１０により生成された鍵に基づいて、証明書を生成する証明書生成装置における証明書生成方法をコンピュータに実行させるためのプログラムであって、
前記公開鍵入力手段が、前記請求項１０により生成された公開鍵を入力する第１のステップと、
前記ハッシュ値算出手段が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第２のステップと、
前記署名手段が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第３のステップと、
前記格納手段が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第４のステップと、
をコンピュータに実行させるためのプログラム。
【請求項１２】
鍵生成装置と、証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法をコンピュータに実行させるためのプログラムであって、
前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、
前記鍵生成装置が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、
前記鍵生成装置が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、
前記鍵生成装置が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、
前記証明書生成装置が、前記鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第５のステップと、
前記証明書生成装置が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第６のステップと、
前記証明書生成装置が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第７のステップと、
前記証明書生成装置が、前記公開鍵証明書をユーザ端末に送信する第８のステップと、
前記サービス提供サーバが、前記ユーザ端末から前記公開鍵証明書を受信する第９のステップと、
前記サービス提供サーバが、該受信した公開鍵証明書の正当性を検証する第１０のステップと、
前記サービス提供サーバが、前記ユーザ端末に送付するデータを、前記サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する第１１のステップと、
前記サービス提供サーバが、該暗号化したデータと前記選択した公開鍵の情報を前記ユーザ端末に送信する第１２のステップと、
前記ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第１３のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービスの提供に用いられる鍵生成装置、証明書生成装置、鍵生成方法、証明書生成方法および生成された鍵と証明書を用いたサービス提供システム、サービス提供方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスでは、利用者を認証するためや、データを秘匿するために様々な暗号方式が使用されている。また、暗号化の一方式である公開鍵暗号については、公開鍵暗号・署名技術の電子署名、暗号化への利用のため、公開鍵の所有者を認証し、公開鍵証明書を発行する認証基盤（ＰＫＩ）の標準化・実用化が進んでいる。
【０００３】
ここで、公開鍵暗号については、鍵生成時において、利用者のバイオメトリクス情報Ｂを求め、秘密情報Ｒを求め、バイオメトリクス情報Ｂと秘密情報Ｒを用いて公開鍵暗号の秘密鍵ＳＫを生成し、本人性を認証する際に、秘密情報Ｒと利用者の第１のバイオメトリクス情報Ｂを用いて生成されたＲＳＡ公開鍵方式における秘密鍵ＳＫについて、利用者の第２のバイオメトリクス情報Ｂ’を求め、第２のバイオメトリクス情報Ｂ’を用いて、秘密鍵ＳＫが、秘密情報Ｒと第１のバイオメトリクス情報Ｂから生成されたことを検証することにより、認証局で発行する公開鍵証明書の信頼性を高める技術が知られている（例えば、特許文献１参照。）。
【特許文献１】特開２００３−３２３１１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、一般に安全性と利便性はトレードオフの関係にあり、１つの方式がすべての機器に、適しているとは限らない。特に公開鍵暗号は、鍵長によって大きく処理時間が異なるため、要求条件に合わせて適切な長さの鍵を使用することが望ましいが、既存のＰＫＩにおいては、公開鍵証明書を事前発行しなければならないため、常に、鍵長が固定された公開鍵と秘密鍵のペアを生成して使用していた。
【０００５】
そこで、本発明は、ユーザの単一の秘密鍵から、複数の秘密鍵と対応する公開鍵を複数生成し、その公開鍵を証明書内に格納することで、サービスの要求するセキュリティレベルに合わせて使用する鍵長を可変にする鍵生成装置、証明書生成装置、サービス提供システム、鍵生成方法、証明書生成方法、サービス提供方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題を解決するために、以下の事項を提案している。
【０００７】
（１）本発明は、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する入力手段と、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する部分秘密鍵生成手段と、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する秘密鍵生成手段と、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、を備えたことを特徴とする鍵生成装置を提案している。
【０００８】
この発明によれば、入力手段は、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する。部分秘密鍵生成手段は、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。秘密鍵生成手段は、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する。公開鍵生成手段は、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。したがって、ユーザが、ただ１つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【０００９】
（２）本発明は、（１）の鍵生成装置について、同一の鍵長の秘密鍵、公開鍵を複数生成する場合に、インデックス番号を前記入力手段に入力することを特徴とする鍵生成装置を提案している。
【００１０】
この発明によれば、同一の鍵長の秘密鍵、公開鍵を複数生成する場合に、インデックス番号を入力手段に入力することから、仮に部分秘密鍵が第三者に露見しても、マスター秘密鍵のセキュリティを保つことができる。
【００１１】
（３）本発明は、（１）または（２）の鍵生成装置について、前記一方向性関数がハッシュ関数であることを特徴とする鍵生成装置を提案している。
【００１２】
この発明によれば、一方向性関数がハッシュ関数であることから高速な演算処理を実現することができる。
【００１３】
（４）本発明は、（１）または（２）の鍵生成装置について、前記入力手段、前記部分秘密鍵生成手段、前記秘密鍵生成手段を耐タンパデバイス内に設けたことを特徴とする鍵生成装置を提案している。
【００１４】
この発明によれば、入力手段、部分秘密鍵生成手段、秘密鍵生成手段を耐タンパデバイス内に設けたことから、マスター秘密鍵を保護しつつ、高速な暗号処理を実現することができる。
【００１５】
（５）本発明は、（１）から（４）の鍵生成装置が生成した公開鍵を入力する公開鍵入力手段と、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、を備えたことを特徴とする証明書生成装置を提案している。
【００１６】
この発明によれば、公開鍵入力手段は、鍵生成装置が生成した公開鍵を入力する。ハッシュ値算出手段は、入力した公開鍵をハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。署名手段は、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値とを結合して、認証局サーバが保有する秘密鍵で署名を行う。格納手段は、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する。したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示／非開示を制御できる。
【００１７】
（６）本発明は、鍵生成装置と、証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムであって、前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する入力手段と、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する部分秘密鍵生成手段と、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する秘密鍵生成手段と、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、を備え、前記証明書生成装置が、前記鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、前記公開鍵証明書をユーザ端末に送信する公開鍵証明書送信手段と、を備え、前記サービス提供サーバが、前記ユーザ端末から前記公開鍵証明書を受信する受信手段と、該受信した公開鍵証明書の正当性を検証する検証手段と、前記ユーザ端末に送付するデータを、前記サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する暗号化手段と、該暗号化したデータと前記選択した公開鍵の情報を前記ユーザ端末に送信するデータ送信手段と、を備え、前記ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化することを特徴とするサービス提供システムを提案している。
【００１８】
この発明によれば、鍵生成装置の入力手段は、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する。部分秘密鍵生成手段は、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。秘密鍵生成手段は、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する。公開鍵生成手段は、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。証明書生成装置のハッシュ値算出手段は、鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。署名手段は、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値とを結合して、認証局サーバが保有する秘密鍵で署名を行う。格納手段は、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する。サービス提供サーバの受信手段は、ユーザ端末から公開鍵証明書を受信する。検証手段は、受信した公開鍵証明書の正当性を検証する。暗号化手段は、ユーザ端末に送付するデータを、サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する。データ送信手段は、暗号化したデータと選択した公開鍵の情報をユーザ端末に送信する。そして、ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する。したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【００１９】
（７）本発明は、入力手段、部分秘密鍵生成手段、秘密鍵生成手段、および公開鍵生成手段を備える鍵生成装置が、サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成方法であって、前記入力手段が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、前記部分秘密鍵生成手段が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、前記秘密鍵生成手段が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、前記公開鍵生成手段が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、を備えたことを特徴とする鍵生成方法を提案している。
【００２０】
この発明によれば、入力手段が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力し、部分秘密鍵生成手段が、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。そして、秘密鍵生成手段が、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成し、公開鍵生成手段が、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。したがって、ユーザが、ただ１つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【００２１】
（８）本発明は、公開鍵入力手段、ハッシュ値算出手段、署名手段、および格納手段を備える証明書生成装置が、（７）により生成された鍵に基づいて、証明書を生成する証明書生成方法であって、前記公開鍵入力手段が、（７）により生成された公開鍵を入力する第１のステップと、前記ハッシュ値算出手段が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第２のステップと、前記署名手段が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第３のステップと、前記格納手段が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第４のステップと、を備えたことを特徴とする証明書生成方法を提案している。
【００２２】
この発明によれば、公開鍵入力手段が、鍵生成装置により生成された公開鍵を入力し、ハッシュ値算出手段が、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。署名手段が、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、格納手段が、公開鍵証明書に、証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する。したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示／非開示を制御できる。
【００２３】
（９）本発明は、鍵生成装置と、証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法であって、前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、前記鍵生成装置が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、前記鍵生成装置が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、前記鍵生成装置が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、前記証明書生成装置が、前記鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する第５のステップと、前記証明書生成装置が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第６のステップと、前記証明書生成装置が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第７のステップと、前記証明書生成装置が、前記公開鍵証明書をユーザ端末に送信する第８のステップと、前記サービス提供サーバが、前記ユーザ端末から前記公開鍵証明書を受信する第９のステップと、前記サービス提供サーバが、該受信した公開鍵証明書の正当性を検証する第１０のステップと、前記サービス提供サーバが、前記ユーザ端末に送付するデータを、前記サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する第１１のステップと、前記サービス提供サーバが、該暗号化したデータと前記選択した公開鍵の情報を前記ユーザ端末に送信する第１２のステップと、前記ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第１３のステップと、を備えることを特徴とするサービス提供方法を提案している。
【００２４】
この発明によれば、鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。そして、鍵生成装置が、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。一方、証明書生成装置は、鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出し、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、証明書生成装置は、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納し、公開鍵証明書をユーザ端末に送信する。サービス提供サーバは、ユーザ端末から公開鍵証明書を受信し、受信した公開鍵証明書の正当性を検証する。サービス提供サーバは、ユーザ端末に送付するデータを、サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化し、暗号化したデータと選択した公開鍵の情報をユーザ端末に送信する、そして、ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する。したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【００２５】
（１０）本発明は、入力手段、部分秘密鍵生成手段、秘密鍵生成手段、および公開鍵生成手段を備え、サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成装置における鍵生成方法をコンピュータに実行させるためのプログラムであって、前記入力手段が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、前記部分秘密鍵生成手段が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、前記秘密鍵生成手段が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、前記公開鍵生成手段が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、をコンピュータに実行させるためのプログラムを提案している。
【００２６】
この発明によれば、入力手段が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力し、部分秘密鍵生成手段が、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。そして、秘密鍵生成手段が、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成し、公開鍵生成手段が、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。したがって、ユーザが、ただ１つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【００２７】
（１１）本発明は、公開鍵入力手段、ハッシュ値算出手段、署名手段、および格納手段を備え、（１０）により生成された鍵に基づいて、証明書を生成する証明書生成装置における証明書生成方法をコンピュータに実行させるためのプログラムであって、前記公開鍵入力手段が、（１０）により生成された公開鍵を入力する第１のステップと、前記ハッシュ値算出手段が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第２のステップと、前記署名手段が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第３のステップと、前記格納手段が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第４のステップと、をコンピュータに実行させるためのプログラムを提案している。
【００２８】
この発明によれば、公開鍵入力手段が、鍵生成装置により生成された公開鍵を入力し、ハッシュ値算出手段が、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。署名手段が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、格納手段が、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する。したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示／非開示を制御できる。
【００２９】
（１２）本発明は、鍵生成装置と、証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法をコンピュータに実行させるためのプログラムであって、前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力する第１のステップと、前記鍵生成装置が、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する第２のステップと、前記鍵生成装置が、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する第３のステップと、前記鍵生成装置が、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第４のステップと、前記証明書生成装置が、前記鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第５のステップと、前記証明書生成装置が、前記認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第６のステップと、前記証明書生成装置が、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第７のステップと、前記証明書生成装置が、前記公開鍵証明書をユーザ端末に送信する第８のステップと、前記サービス提供サーバが、前記ユーザ端末から前記公開鍵証明書を受信する第９のステップと、前記サービス提供サーバが、該受信した公開鍵証明書の正当性を検証する第１０のステップと、前記サービス提供サーバが、前記ユーザ端末に送付するデータを、前記サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する第１１のステップと、前記サービス提供サーバが、該暗号化したデータと前記選択した公開鍵の情報を前記ユーザ端末に送信する第１２のステップと、前記ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第１３のステップと、をコンピュータに実行させるためのプログラムを提案している。
【００３０】
この発明によれば、鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。そして、鍵生成装置が、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。一方、証明書生成装置は、鍵生成装置から入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出し、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、証明書生成装置が、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納し、公開鍵証明書をユーザ端末に送信する。サービス提供サーバは、ユーザ端末から公開鍵証明書を受信し、受信した公開鍵証明書の正当性を検証する。サービス提供サーバが、ユーザ端末に送付するデータを、サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化し、暗号化したデータと選択した公開鍵の情報をユーザ端末に送信する、そして、ユーザ端末が、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する。したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【発明の効果】
【００３１】
本発明によれば、個々のサービスにおいて最適な鍵長で暗号処理ができるようになり、処理時間の短縮による利便性の向上を図れるとともに、適切なセキュリティ対策が可能となるという効果がある。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３３】
図１から図７を用いて、本発明に係るサービス提供システムについて、詳細に説明する。
【００３４】
＜サービス提供システムの構成＞
本実施形態に係るサービス提供システムは、図１に示すように、鍵生成装置１と、証明書生成装置２と、認証局サーバ３と、ユーザ端末４と、サービス提供サーバ５と、ネットワーク６とから構成されている。
【００３５】
鍵生成装置１は、ユーザが管理するマスター秘密鍵から、通常使用する任意の鍵長の秘密鍵を動的に生成する。証明書生成装置２は、鍵生成装置１が生成した複数の公開鍵、それら公開鍵のハッシュ値を格納するとともに、鍵生成装置１が生成した複数の公開鍵のハッシュ値および認証局サーバ３が保持する証明書情報のハッシュ値を連結して、認証局サーバ３が保持する秘密鍵により行った署名を格納して、証明書を生成する。
【００３６】
認証局サーバ３は、証明書情報および署名に用いる秘密鍵を保持する。ユーザ端末４は、証明書生成装置２から公開鍵証明書を受信するとともに、受信した公開鍵証明書をサービス提供サーバ５にネットワーク６を介して、送信する。
【００３７】
サービス提供サーバ５は、ユーザ端末４から公開鍵証明書を受信し、受信した公開鍵証明書の正当性を検証する。そして、ユーザ端末４に送付するデータを、セキュリティレベルに合わせて選択された公開鍵で暗号化し、暗号化したデータと選択した公開鍵の情報をユーザ端末４に送信する。
【００３８】
＜鍵生成装置の構成＞
図２を用いて、本実施形態に係る鍵生成装置の構成について説明する。
本実施形態に係る鍵生成装置は、図２に示すように、入力部１１と、部分秘密鍵生成部１２と、秘密鍵生成部１３と、公開鍵生成部１４とから構成されている。
【００３９】
入力部１１は、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）、インデックス値とを入力する。部分秘密鍵生成部１２は、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長と、インデックス値とをハッシュ関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長と、インデックス値と、直前に生成された部分秘密鍵とをハッシュ関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する。
【００４０】
なお、秘密鍵の動的生成処理が、ハッシュ関数のみで構成されていることから、高速な演算を実現することができる。また、入力部１１、部分秘密鍵生成部１２、秘密鍵生成部１３を耐タンパデバイス内に格納すれば、マスター秘密鍵を保護しつつ、高速な暗号処理を実現することができる。
【００４１】
秘密鍵生成部１３は、部分秘密鍵生成部１２において、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する。公開鍵生成部１４は、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。なお、生成された公開鍵は、証明書生成装置２に送信される。
【００４２】
＜証明書生成装置の構成＞
図３を用いて、本実施形態に係る証明書生成装置の構成について説明する。
本実施形態に係る証明書生成装置は、図３に示すように、ハッシュ値算出部２１ａ、２１ｂ、２１ｃと、署名部２２とから構成されている。
【００４３】
ハッシュ値算出部２１ａ、２１ｂ、２１ｃは、鍵生成装置から入力した公開鍵と、認証局サーバ３が保持する証明書情報をハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。なお、ハッシュ値を算出する処理については、認証局サーバ３で実行してもよい。
【００４４】
署名部２２は、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。なお、証明書生成装置は、認証局サーバ３が保有する公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納するために、これらの情報を送信する。
【００４５】
＜サービス提供サーバの構成＞
図４を用いて、本実施形態に係るサービス提供サーバの構成について説明する。
本実施形態に係るサービス提供サーバは、図４に示すように、受信部３１と、検証部３２と、暗号化部３３と、送信部３４とから構成されている。
【００４６】
受信部３１は、ユーザ端末４から公開鍵証明書を受信する。検証部３２は、受信した公
開鍵証明書の正当性を検証する。暗号化部３３は、ユーザ端末４に送付するデータを、サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化する。送信部３４は、暗号化したデータと選択した公開鍵の情報をユーザ端末４に送信する。
【００４７】
＜鍵生成装置の処理＞
図５を用いて、本実施形態に係る鍵生成装置の処理について説明する。まず、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力し（ステップＳ１０１）、入力したマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する（ステップＳ１０２）。
【００４８】
生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成し（ステップＳ１０３）、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する（ステップＳ１０４）。
【００４９】
したがって、ユーザが、ただ１つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【００５０】
＜証明書生成装置の処理＞
図６を用いて、本実施形態に係る証明書生成装置の処理について説明する。
まず、鍵生成装置により生成された公開鍵を入力し（ステップＳ２０１）、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する（ステップＳ２０２）。
【００５１】
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行い（ステップＳ２０３）、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する（ステップＳ２０４）。
【００５２】
したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示／非開示を制御できる。
【００５３】
＜サービス提供システムの処理＞
図７を用いて、本実施形態に係るサービス提供システムの処理について説明する。
まず、鍵生成装置は、ユーザが所有するマスター秘密鍵と、生成したい秘密鍵の鍵長（Ｌビット）とを少なくとも入力し（ステップＳ３０１）、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方向性関数で処理して、ｎビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数（Ｎ：Ｎは正の整数）の部分秘密鍵を生成する（ステップＳ３０２）。
【００５４】
そして、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長（Ｌ＝ｎＮビット）の秘密鍵を生成する（ステップＳ３０３）。そして、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する（ステップＳ３０４）。
【００５５】
証明書生成装置は、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出し（ステップＳ３０５）、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う（ステップＳ３０６）。そして、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納し（ステップＳ３０７）、公開鍵証明書をユーザに送信する（ステップＳ３０８）。
【００５６】
サービス提供サーバ５は、ユーザ端末４から公開鍵証明書を受信し（ステップＳ３０９）、受信した公開鍵証明書の正当性を検証する（ステップＳ３１０）。そして、サービス提供サーバ５は、ユーザ端末４に送付するデータを、サービス提供者がセキュリティレベルに合わせて選択した公開鍵で、暗号化し（ステップＳ３１１）、暗号化したデータと選択した公開鍵の情報をユーザ端末４に送信する（ステップＳ３１２）。
【００５７】
ユーザ端末４は、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する（ステップＳ３１３）。
【００５８】
したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【００５９】
なお、鍵生成装置、証明書生成装置およびサービス提供システムの処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを鍵生成装置、証明書生成装置およびサービス提供システムに読み込ませ、実行することによって本発明の鍵生成装置、証明書生成装置およびサービス提供システムを実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００６０】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００６１】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６２】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００６３】
【図１】本実施形態に係るサービス提供システムの構成図である。
【図２】本実施形態に係る鍵生成装置の構成図である。
【図３】本実施形態に係る証明書生成装置の構成図である。
【図４】本実施形態に係るサービス提供サーバの構成図である。
【図５】本実施形態に係る鍵生成装置の処理フローである。
【図６】本実施形態に係る証明書生成装置の処理フローである。
【図７】本実施形態に係るサービス提供サーバの処理フローである。
【符号の説明】
【００６４】
１・・・鍵生成装置
２・・・証明書生成装置
３・・・認証局サーバ
４・・・ユーザ端末
５・・・サービス提供サーバ
６・・・ネットワーク
１１・・・入力部
１２・・・部分秘密鍵生成部
１３・・・秘密鍵生成部
１４・・・公開鍵生成部
２１ａ、２１ｂ、２１ｃ・・・ハッシュ値算出部
２２・・・署名部
３１・・・受信部
３２・・・検証部
３３・・・暗号化部
３４・・・送信部
【図１】
0005324813.tif 000002
【図２】
0005324813.tif 000003
【図３】
0005324813.tif 000004
【図４】
0005324813.tif 000005
【図５】
0005324813.tif 000006
【図６】
0005324813.tif 000007
【図７】
0005324813.tif 000008