説明

鍵生成装置、証明書生成装置、サービス提供システム、鍵生成方法、証明書生成方法、サービス提供方法およびプログラム

【課題】ユーザの単一の秘密鍵から、複数の秘密鍵と対応する公開鍵を複数生成し、その公開鍵を証明書内に格納することで、サービスの要求するセキュリティレベルに合わせて使用する鍵長を可変にする。
【解決手段】ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。そして、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サービスの提供に用いられる鍵生成装置、証明書生成装置、鍵生成方法、証明書生成方法および生成された鍵と証明書を用いたサービス提供システム、サービス提供方法およびプログラムに関する。
【背景技術】
【0002】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスでは、利用者を認証するためや、データを秘匿するために様々な暗号方式が使用されている。また、暗号化の一方式である公開鍵暗号については、公開鍵暗号・署名技術の電子署名、暗号化への利用のため、公開鍵の所有者を認証し、公開鍵証明書を発行する認証基盤(PKI)の標準化・実用化が進んでいる。
【0003】
ここで、公開鍵暗号については、鍵生成時において、利用者のバイオメトリクス情報Bを求め、秘密情報Rを求め、バイオメトリクス情報Bと秘密情報Rを用いて公開鍵暗号の秘密鍵SKを生成し、本人性を認証する際に、秘密情報Rと利用者の第1のバイオメトリクス情報Bを用いて生成されたRSA公開鍵方式における秘密鍵SKについて、利用者の第2のバイオメトリクス情報B’を求め、第2のバイオメトリクス情報B’を用いて、秘密鍵SKが、秘密情報Rと第1のバイオメトリクス情報Bから生成されたことを検証することにより、認証局で発行する公開鍵証明書の信頼性を高める技術が知られている(例えば、特許文献1参照。)。
【特許文献1】特開2003−323116号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、一般に安全性と利便性はトレードオフの関係にあり、1つの方式がすべての機器に、適しているとは限らない。特に公開鍵暗号は、鍵長によって大きく処理時間が異なるため、要求条件に合わせて適切な長さの鍵を使用することが望ましいが、既存のPKIにおいては、公開鍵証明書を事前発行しなければならないため、常に、鍵長が固定された公開鍵と秘密鍵のペアを生成して使用していた。
【0005】
そこで、本発明は、ユーザの単一の秘密鍵から、複数の秘密鍵と対応する公開鍵を複数生成し、その公開鍵を証明書内に格納することで、サービスの要求するセキュリティレベルに合わせて使用する鍵長を可変にする鍵生成装置、証明書生成装置、サービス提供システム、鍵生成方法、証明書生成方法、サービス提供方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、上述の課題を解決するために、以下の事項を提案している。
【0007】
(1)本発明は、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する入力手段と、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する部分秘密鍵生成手段と、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する秘密鍵生成手段と、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、を備えたことを特徴とする鍵生成装置を提案している。
【0008】
この発明によれば、入力手段は、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する。部分秘密鍵生成手段は、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。秘密鍵生成手段は、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する。公開鍵生成手段は、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。したがって、ユーザが、ただ1つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【0009】
(2)本発明は、(1)の鍵生成装置について、同一の鍵長の秘密鍵、公開鍵を複数生成する場合に、インデックス番号を前記入力手段に入力することを特徴とする鍵生成装置を提案している。
【0010】
この発明によれば、同一の鍵長の秘密鍵、公開鍵を複数生成する場合に、インデックス番号を入力手段に入力することから、仮に部分秘密鍵が第三者に露見しても、マスター秘密鍵のセキュリティを保つことができる。
【0011】
(3)本発明は、(1)または(2)の鍵生成装置について、前記一方向性関数がハッシュ関数であることを特徴とする鍵生成装置を提案している。
【0012】
この発明によれば、一方向性関数がハッシュ関数であることから高速な演算処理を実現することができる。
【0013】
(4)本発明は、(1)または(2)の鍵生成装置について、前記入力手段、部分秘密鍵生成手段、秘密鍵生成手段を耐タンパデバイス内に設けたことを特徴とする鍵生成装置を提案している。
【0014】
この発明によれば、入力手段、部分秘密鍵生成手段、秘密鍵生成手段を耐タンパデバイス内に設けたことから、マスター秘密鍵を保護しつつ、高速な暗号処理を実現することができる。
【0015】
(5)本発明は、(2)から(4)の鍵生成装置が生成した公開鍵を入力する公開鍵入力手段と、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、を備えたことを特徴とする証明書生成装置を提案している。
【0016】
この発明によれば、公開鍵入力手段は、前記鍵生成装置が生成した公開鍵を入力する。ハッシュ値算出手段は、入力した公開鍵をハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する。署名手段は、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値とを結合して、認証局サーバが保有する秘密鍵で署名を行う。格納手段は、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する。したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示/非開示を制御できる。
【0017】
(6)本発明は、鍵生成装置と証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムであって、前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する入力手段と、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する部分秘密鍵生成手段と、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する秘密鍵生成手段と、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、を備え、前記証明書生成装置が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、前記公開鍵証明書をユーザに送信する公開鍵証明書送信手段と、を備え、前記サービス提供サーバが、前記ユーザから前記公開鍵証明書を受信する受信手段と、該受信した公開鍵証明書の正当性を検証する検証手段と、前記サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを該選択した公開鍵で暗号化する暗号化手段と、該暗号化したデータと前記選択した公開鍵の情報をユーザに送信するデータ送信手段と、を備え、前記ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化することを特徴とするサービス提供システムを提案している。
【0018】
この発明によれば、鍵生成装置の入力手段は、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する。部分秘密鍵生成手段は、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。秘密鍵生成手段は、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する。公開鍵生成手段は、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。証明書生成装置の公開鍵入力手段は、前記鍵生成装置が生成した公開鍵を入力する。ハッシュ値算出手段は、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。署名手段は、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値とを結合して、認証局サーバが保有する秘密鍵で署名を行う。格納手段は、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する。サービス提供サーバの受信手段は、ユーザから公開鍵証明書を受信する。検証手段は、受信した公開鍵証明書の正当性を検証する。暗号化手段は、サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを選択した公開鍵で暗号化する。データ送信手段は、暗号化したデータと選択した公開鍵の情報をユーザに送信する。そして、ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する。したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【0019】
(7)本発明は、サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成方法であって、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、を備えたことを特徴とする鍵生成方法を提案している。
【0020】
この発明によれば、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。そして、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。したがって、ユーザが、ただ1つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【0021】
(8)本発明は、(7)により生成された鍵に基づいて、証明書を生成する証明書生成方法であって、(7)により生成された公開鍵を入力する第1のステップと、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第2のステップと、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第3のステップと、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第4のステップと、を備えたことを特徴とする証明書生成方法を提案している。
【0022】
この発明によれば、鍵生成装置により生成された公開鍵を入力し、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。認証局サーバは、保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、公開鍵証明書に、証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する。したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示/非開示を制御できる。
【0023】
(9)本発明は、鍵生成装置と証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法であって、前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、前記証明書生成装置が、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する第5のステップと、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第6のステップと、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第7のステップと、前記公開鍵証明書をユーザに送信する第8のステップと、前記サービス提供サーバが、前記ユーザから前記公開鍵証明書を受信する第9のステップと、該受信した公開鍵証明書の正当性を検証する第10のステップと、前記サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを該選択した公開鍵で暗号化する第11のステップと、該暗号化したデータと前記選択した公開鍵の情報をユーザに送信する第12のステップと、前記ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第13のステップと、を備えることを特徴とするサービス提供方法を提案している。
【0024】
この発明によれば、鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。そして、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。一方、証明書生成装置は、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出し、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納し、公開鍵証明書をユーザに送信する。サービス提供サーバは、ユーザから前記公開鍵証明書を受信し、受信した公開鍵証明書の正当性を検証する。サービス提供者は、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを選択した公開鍵で暗号化し、暗号化したデータと選択した公開鍵の情報をユーザに送信する、そして、ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する。したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【0025】
(10)本発明は、サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成方法をコンピュータに実行させるためのプログラムであって、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、をコンピュータに実行させるためのプログラムを提案している。
【0026】
この発明によれば、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。そして、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。したがって、ユーザが、ただ1つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【0027】
(11)本発明は、(7)により生成された鍵に基づいて、証明書を生成する証明書生成方法をコンピュータに実行させるためのプログラムであって、(7)により生成された公開鍵を入力する第1のステップと、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第2のステップと、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第3のステップと、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第4のステップと、をコンピュータに実行させるためのプログラムを提案している。
【0028】
この発明によれば、鍵生成装置により生成された公開鍵を入力し、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。認証局サーバは、保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、公開鍵証明書に、証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する。したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示/非開示を制御できる。
【0029】
(12)本発明は、鍵生成装置と証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法をコンピュータに実行させるためのプログラムであって、前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、前記証明書生成装置が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第5のステップと、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第6のステップと、公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第7のステップと、前記公開鍵証明書をユーザに送信する第8のステップと、前記サービス提供サーバが、前記ユーザから前記公開鍵証明書を受信する第9のステップと、該受信した公開鍵証明書の正当性を検証する第10のステップと、前記サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを該選択した公開鍵で暗号化する第11のステップと、該暗号化したデータと前記選択した公開鍵の情報をユーザに送信する第12のステップと、前記ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第13のステップと、をコンピュータに実行させるためのプログラムを提案している。
【0030】
この発明によれば、鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。そして、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成し、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。一方、証明書生成装置は、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出し、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。そして、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納し、公開鍵証明書をユーザに送信する。サービス提供サーバは、ユーザから前記公開鍵証明書を受信し、受信した公開鍵証明書の正当性を検証する。サービス提供者は、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを選択した公開鍵で暗号化し、暗号化したデータと選択した公開鍵の情報をユーザに送信する、そして、ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する。したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【発明の効果】
【0031】
本発明によれば、個々のサービスにおいて最適な鍵長で暗号処理ができるようになり、処理時間の短縮による利便性の向上を図れるとともに、適切なセキュリティ対策が可能となるという効果がある。
【発明を実施するための最良の形態】
【0032】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0033】
図1から図7を用いて、本発明に係るサービス提供システムについて、詳細に説明する。
【0034】
<サービス提供システムの構成>
本実施形態に係るサービス提供システムは、図1に示すように、鍵生成装置1と、証明書生成装置2と、認証局サーバ3と、ユーザ端末4と、サービス提供サーバ5と、ネットワーク6とから構成されている。
【0035】
鍵生成装置1は、ユーザが管理するマスター秘密鍵から、通常使用する任意の鍵長の秘密鍵を動的に生成する。証明書生成装置2は、鍵生成装置1が生成した複数の公開鍵、それら公開鍵のハッシュ値を格納するとともに、鍵生成装置1が生成した複数の公開鍵認のハッシュ値および認証局サーバ3が保持する証明書情報のハッシュ値を連結して、認証局サーバ3が保持する秘密鍵により行った署名を格納して、証明書を生成する。
【0036】
認証局サーバ3は、証明書情報および署名に用いる秘密鍵を保持する。ユーザ端末4は、証明書生成装置2から公開鍵証明書を受信するとともに、受信した公開鍵証明書をサービス提供サーバ5にネットワーク6を介して、送信する。
【0037】
サービス提供サーバ5は、ユーザ端末4から公開鍵証明書を受信し、受信した公開鍵証明書の正当性を検証する。そして、セキュリティレベルに合わせて、公開鍵を選択し、ユーザ端末4に送付するデータを選択した公開鍵で暗号化し、暗号化したデータと選択した公開鍵の情報をユーザに送信する。
【0038】
<鍵生成装置の構成>
図2を用いて、本実施形態に係る鍵生成装置の構成について説明する。
本実施形態に係る鍵生成装置は、図2に示すように、入力部11と、部分秘密鍵生成部12と、秘密鍵生成部13と、公開鍵生成部14とから構成されている。
【0039】
入力部11は、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)、インデックス値とを入力する。部分秘密鍵生成部12は、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長と、インデックス値とをハッシュ関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長と、インデックス値と、直前に生成された部分秘密鍵とをハッシュ関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する。
【0040】
なお、秘密鍵の動的生成処理が、ハッシュ関数のみで構成されていることから、高速な演算を実現することができる。また、入力部11、部分秘密鍵生成部12、秘密鍵生成部13を耐タンパデバイス内に格納すれば、マスター秘密鍵を保護しつつ、高速な暗号処理を実現することができる。
【0041】
秘密鍵生成部13は、部分秘密鍵生成部12において、生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する。公開鍵生成部14は、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する。なお、生成された公開鍵は、証明書生成装置2に送信される。
【0042】
<証明書生成装置の構成>
図3を用いて、本実施形態に係る証明書生成装置の構成について説明する。
本実施形態に係る証明書生成装置は、図3に示すように、ハッシュ値算出部21a、21b、21cと、署名部22とから構成されている。
【0043】
ハッシュ値算出部21a、21b、21cは、鍵生成装置から入力した公開鍵と、認証局サーバ3が保持する証明書情報をハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する。なお、ハッシュ値を算出する処理については、認証局サーバ3で実行してもよい。
【0044】
署名部22は、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う。なお、証明書生成装置は、認証局サーバ3が保有する公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納するために、これらの情報を送信する。
【0045】
<サービス提供サーバの構成>
図4を用いて、本実施形態に係るサービス提供サーバの構成について説明する。
本実施形態に係るサービス提供サーバは、図4に示すように、受信部31と、検証部32と、暗号化部33と、送信部34とから構成されている。
【0046】
受信部31は、ユーザ端末4から公開鍵証明書を受信する。検証部32は、受信した公開鍵証明書の正当性を検証する。暗号化部33は、サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを選択した公開鍵で暗号化する。送信部34は、暗号化したデータと選択した公開鍵の情報をユーザに送信する。
【0047】
<鍵生成装置の処理>
図5を用いて、本実施形態に係る鍵生成装置の処理について説明する。
まず、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し(ステップS101)、入力したマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する(ステップS102)。
【0048】
生成された複数の部分秘密鍵を結合して、生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成し(ステップS103)、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する(ステップS104)。
【0049】
したがって、ユーザが、ただ1つのマスター秘密鍵を管理し、通常使用する秘密鍵は、任意の鍵長で、動的に生成することができる。
【0050】
<証明書生成装置の処理>
図6を用いて、本実施形態に係る証明書生成装置の処理について説明する。
まず、鍵生成装置により生成された公開鍵を入力し(ステップS201)、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出する(ステップS202)。
【0051】
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行い(ステップS203)、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納する(ステップS204)。
【0052】
したがって、公開鍵証明書の署名が、各公開鍵のハッシュ値と、その他の情報のハッシュ値を連結した値に対して計算するため、個々の公開鍵の開示/非開示を制御できる。
【0053】
<サービス提供システムの処理>
図7を用いて、本実施形態に係るサービス提供システムの処理について説明する。
まず、鍵生成装置は、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力し(ステップS301)、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する(ステップS302)。
【0054】
そして、生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する(ステップS303)。そして、生成した秘密鍵を一方向性関数で処理して公開鍵を生成する(ステップS304)。
【0055】
証明書生成装置は、入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および証明書情報のハッシュ値を算出し(ステップS305)、認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、算出したそれぞれの公開鍵のハッシュ値を結合して、認証局サーバが保有する秘密鍵で署名を行う(ステップS306)。そして、公開鍵証明書に、証明書情報、それぞれの公開鍵、公開鍵のハッシュ値、署名を格納し(ステップS307)、公開鍵証明書をユーザに送信する(ステップS308)。
【0056】
サービス提供サーバは、ユーザから公開鍵証明書を受信し(ステップS309)、受信した公開鍵証明書の正当性を検証する(ステップS310)。そして、サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを選択した公開鍵で暗号化し(ステップS311)、暗号化したデータと選択した公開鍵の情報をユーザに送信する(ステップS312)。
【0057】
ユーザは、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、生成した秘密鍵によりデータを復号化する(ステップS313)。
【0058】
したがって、複数の鍵長の異なる公開鍵、秘密鍵を求められるセキュリティレベルに応じて使い分けることで効率的な暗号処理を実現することができる。また、複数の公開鍵・秘密鍵をサービスごとに使い分けることで、安全性を強化したり、署名レベルをコントロールすることができる。
【0059】
なお、鍵生成装置、証明書生成装置およびサービス提供システムの処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを鍵生成装置、証明書生成装置およびサービス提供システムに読み込ませ、実行することによって本発明の鍵生成装置、証明書生成装置およびサービス提供システムを実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0060】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0061】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0062】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0063】
【図1】本実施形態に係るサービス提供システムの構成図である。
【図2】本実施形態に係る鍵生成装置の構成図である。
【図3】本実施形態に係る証明書生成装置の構成図である。
【図4】本実施形態に係るサービス提供サーバの構成図である。
【図5】本実施形態に係る鍵生成装置の処理フローである。
【図6】本実施形態に係る証明書生成装置の処理フローである。
【図7】本実施形態に係るサービス提供サーバの処理フローである。
【符号の説明】
【0064】
1・・・鍵生成装置
2・・・証明書生成装置
3・・・認証局サーバ
4・・・ユーザ端末
5・・・サービス提供サーバ
6・・・ネットワーク
11・・・入力部
12・・・部分秘密鍵生成部
13・・・秘密鍵生成部
14・・・公開鍵生成部
21a、21b、21c・・・ハッシュ値算出部
22・・・署名部
31・・・受信部
32・・・検証部
33・・・暗号化部
34・・・送信部

【特許請求の範囲】
【請求項1】
ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する入力手段と、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する部分秘密鍵生成手段と、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する秘密鍵生成手段と、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、
を備えたことを特徴とする鍵生成装置。
【請求項2】
同一の鍵長の秘密鍵、公開鍵を複数生成する場合に、インデックス番号を前記入力手段に入力することを特徴とする請求項1に記載の鍵生成装置。
【請求項3】
前記一方向性関数がハッシュ関数であることを特徴とする請求項1または請求項2に記載の鍵生成装置。
【請求項4】
前記入力手段、部分秘密鍵生成手段、秘密鍵生成手段を耐タンパデバイス内に設けたことを特徴とする請求項1または請求項2に記載の鍵生成装置。
【請求項5】
前記請求項1から請求項4に記載の鍵生成装置が生成した公開鍵を入力する公開鍵入力手段と、
該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、
を備えたことを特徴とする証明書生成装置。
【請求項6】
鍵生成装置と証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムであって、
前記鍵生成装置が、
ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する入力手段と、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する部分秘密鍵生成手段と、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する秘密鍵生成手段と、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する公開鍵生成手段と、
を備え、
前記証明書生成装置が、
該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出するハッシュ値算出手段と、
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う署名手段と、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する格納手段と、
前記公開鍵証明書をユーザに送信する公開鍵証明書送信手段と、
を備え、
前記サービス提供サーバが、
前記ユーザから前記公開鍵証明書を受信する受信手段と、
該受信した公開鍵証明書の正当性を検証する検証手段と、
前記サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを該選択した公開鍵で暗号化する暗号化手段と、
該暗号化したデータと前記選択した公開鍵の情報をユーザに送信するデータ送信手段と、
を備え、
前記ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化することを特徴とするサービス提供システム。
【請求項7】
サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成方法であって、
ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、
を備えたことを特徴とする鍵生成方法。
【請求項8】
前記請求項7により生成された鍵に基づいて、証明書を生成する証明書生成方法であって、
前記請求項7により生成された公開鍵を入力する第1のステップと、
該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第2のステップと、
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第3のステップと、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第4のステップと、
を備えたことを特徴とする証明書生成方法。
【請求項9】
鍵生成装置と証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法であって、
前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、
前記証明書生成装置が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第5のステップと、
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第6のステップと、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第7のステップと、
前記公開鍵証明書をユーザに送信する第8のステップと、
前記サービス提供サーバが、前記ユーザから前記公開鍵証明書を受信する第9のステップと、
該受信した公開鍵証明書の正当性を検証する第10のステップと、
前記サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを該選択した公開鍵で暗号化する第11のステップと、
該暗号化したデータと前記選択した公開鍵の情報をユーザに送信する第12のステップと、
前記ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第13のステップと、
を備えることを特徴とするサービス提供方法。
【請求項10】
サービスの提供に用いる鍵を任意の鍵長で生成する鍵生成方法をコンピュータに実行させるためのプログラムであって、
ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、
をコンピュータに実行させるためのプログラム。
【請求項11】
前記請求項7により生成された鍵に基づいて、証明書を生成する証明書生成方法をコンピュータに実行させるためのプログラムであって、
前記請求項7により生成された公開鍵を入力する第1のステップと、
該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第2のステップと、
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第3のステップと、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第4のステップと、
をコンピュータに実行させるためのプログラム。
【請求項12】
鍵生成装置と証明書生成装置と、サービス提供者が運営するサービス提供サーバとからなるサービス提供システムにおけるサービス提供方法をコンピュータに実行させるためのプログラムであって、
前記鍵生成装置が、ユーザが所有するマスター秘密鍵と、生成したい鍵の鍵長(Lビット)とを少なくとも入力する第1のステップと、
該入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報を一方性向関数で処理して、nビットの部分秘密鍵を生成するとともに、以降、前記入力されたマスター秘密鍵と、生成したい秘密鍵の鍵長とを含む情報と、直前に生成された部分秘密鍵とを一方向性関数で処理して、複数(N:Nは正の整数)の部分秘密鍵を生成する第2のステップと、
該生成された複数の部分秘密鍵を結合して、前記生成したい秘密鍵の鍵長(L=nNビット)の秘密鍵を生成する第3のステップと、
該生成した秘密鍵を一方向性関数で処理して公開鍵を生成する第4のステップと、
前記証明書生成装置が、該入力した公開鍵と認証局サーバが保持する証明書情報とをハッシュ関数で処理して、それぞれの公開鍵のハッシュ値および前記証明書情報のハッシュ値を算出する第5のステップと、
認証局サーバが保有する証明書情報をハッシュ関数で処理して得たハッシュ値と、該算出したそれぞれの公開鍵のハッシュ値を結合して、前記認証局サーバが保有する秘密鍵で署名を行う第6のステップと、
公開鍵証明書に、前記証明書情報、それぞれの公開鍵、該公開鍵のハッシュ値、署名を格納する第7のステップと、
前記公開鍵証明書をユーザに送信する第8のステップと、
前記サービス提供サーバが、前記ユーザから前記公開鍵証明書を受信する第9のステップと、
該受信した公開鍵証明書の正当性を検証する第10のステップと、
前記サービス提供者が、セキュリティレベルに合わせて、公開鍵を選択し、ユーザに送付するデータを該選択した公開鍵で暗号化する第11のステップと、
該暗号化したデータと前記選択した公開鍵の情報をユーザに送信する第12のステップと、
前記ユーザが、選択された公開鍵に対応する秘密鍵をマスター秘密鍵から生成し、該生成した秘密鍵によりデータを復号化する第13のステップと、
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate