(57)【特許請求の範囲】
【請求項１】
データ暗号化装置が、暗号文の生成に際しパラメータとして用いる、公開鍵を変換することで得られるデータを、データ復号化装置が、当該公開鍵と対の秘密鍵を用いることなく生成する鍵回復方法であって、
前記データ暗号化装置は、第一の生成手段と、付加手段とを備え、
前記第一の生成手段が、暗号文の生成に際しパラメータとして用いられる第一の公開鍵を変換することで得られるデータと、少なくとも１つの第二の公開鍵を変換することで得られるデータとの間において、前記第二の公開鍵を変換することで得られるデータが分かれば、前記第一の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第一の処理を実行し、
前記付加手段が、前記暗号文に、前記第一の処理の結果得られるデータ値を付加する第二の処理を実行し、
前記データ復号化装置は、前記第二の公開鍵と対の秘密鍵を記憶する手段と、取得手段と、第二の生成手段とを備え、
前記取得手段が、前記第二の公開鍵を変換することで得られるデータを、当該第二の公開鍵と対の秘密鍵から求める第三の処理を実行し、
前記第二の生成手段が、前記第二の処理で暗号文に付加されたデータ値および前記第三の処理で求めたデータを、前記第一の処理で用いた関係式に代入することにより、当該暗号文の生成に際しパラメータとして用いられた、前記第一の公開鍵を変換することで得られるデータを求める第四の処理を実行すること
を特徴とする鍵回復方法。
【請求項２】
請求項１記載の鍵回復方法であって、
前記公開鍵を変換することで得られるデータとは、
生成した乱数と当該公開鍵とを作用させることで得られるデータであること
を特徴とする鍵回復方法。
【請求項３】
データ暗号化装置にて、暗号文の生成に際しパラメータとして用いられる、公開鍵を変換することで得られるデータを、データ復号化装置にて、当該公開鍵と対の秘密鍵を用いることなく生成する鍵回復システムであって、
前記データ暗号化装置は、
暗号文の生成に際しパラメータとして用いる第一の公開鍵を変換することで得られるデータと、少なくとも１つの第二の公開鍵を変換することで得られるデータとの間において、前記第二の公開鍵を変換することで得られるデータが分かれば、前記第一の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第一の生成手段と、
前記暗号文に、前記第一の生成手段により生成されたデータ値を付加する付加手段と、を備え、
前記データ復号化装置は、
前記第二の公開鍵を変換することで得られるデータを取得する取得手段と、
前記付加手段で暗号文に付加されたデータ値と前記取得手段により取得したデータとを、前記第一の生成手段で用いた関係式に代入することにより、当該暗号文の生成に際しパラメータとして用いられた、前記第一の公開鍵を変換することで得られるデータを求める第二の生成手段と、を備えていること
を特徴とする鍵回復システム。
【請求項４】
請求項３記載の鍵回復システムであって、
前記取得手段は、
前記第二の公開鍵を変換することで得られるデータを、前記第二の公開鍵と対になる秘密鍵を所有する少なくとも１つの情報処理装置から取得するものであり、
前記情報処理装置は、
前記第二の公開鍵を変換することで得られるデータを、自己が所有する前記第二の公開鍵と対になる秘密鍵から求めるものであること
を特徴とする鍵回復システム。
【請求項５】
請求項３記載の鍵回復システムであって、
前記取得手段は、
前記第二の公開鍵を変換することで得られるデータを、自己が所有する前記第二の公開鍵と対になる秘密鍵から求めるものであること
を特徴とする鍵回復システム。
【請求項６】
請求項３記載の鍵回復システムであって、
前記第二の公開鍵と対になる秘密鍵は、
所定の演算を行うことで復元可能なように複数に分割されて、複数の情報処理装置に保持されており、
前記複数の情報処理装置の少なくとも１つは、
前記複数の情報処理装置各々が所有する前記秘密鍵の一部に対して前記所定の演算を行うことで、秘密鍵を復元する手段と、
前記第二の公開鍵を変換することで得られるデータを、前記復元した秘密鍵から求める手段と、を備え、
前記取得手段は、
前記複数の情報処理装置の少なくとも１つにおいて求められた、前記第二の公開鍵を変換することで得られるデータを取得するものであること
を特徴とする鍵回復システム。
【請求項７】
暗号文の生成に際しパラメータとして用いる、第一の公開鍵を変換することで得られるデータを特定する情報を生成する情報処理装置であって、
暗号文の生成に際しパラメータとして用いる第一の公開鍵を変換することで得られるデータと、少なくとも１つの第二の公開鍵を変換することで得られるデータとの間において、前記第二の公開鍵を変換することで得られるデータが分かれば、前記第一の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する生成手段を有すること
を特徴とする情報処理装置。
【請求項８】
請求項７記載の情報処理装置で生成されるデータ値から、暗号文の生成に際しパラメータとして用いる、第一の公開鍵を変換することで得られるデータを回復する情報処理装置であって、
前記第二の公開鍵を変換することで得られるデータを取得する取得手段と、
前記情報処理装置で生成されるデータ値と、前記取得手段で取得したデータとを基に、前記第一の公開鍵を変換することで得られるデータを求める算出手段と、を備えていること
を特徴とする情報処理装置。
【請求項９】
暗号文生成のための暗号化プログラムが記憶された、コンピュータ読み取り可能な記憶媒体であって、
当該暗号化プログラムは、コンピュータを、
暗号文の生成に用いた第一の公開鍵を変換することで得られるデータと、少なくとも１つの第二の公開鍵を変換することで得られるデータとの間において、前記第二の公開鍵を変換することで得られるデータが分かれば、前記第一の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第一の生成手段、および、
前記暗号文に、前記第一の生成手段が生成したデータ値を付加する手段として、機能させること
を特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１０】
請求項９記載のコンピュータ読み取り可能な記憶媒体に記憶された暗号化プログラムをコンピュータが実行することにより生成された暗号文を復号するための復号化プログラムが記憶された、コンピュータ読み取り可能な記憶媒体であって、
当該復号化プログラムは、コンピュータを、
前記第二の公開鍵を変換することで得られるデータを、当該コンピュータに記憶されている当該第二の公開鍵と対の秘密鍵から算出する取得手段、
前記暗号文に付加されたデータ値および前記取得手段が算出したデータを、前記データ値生成のために用いた関係式に代入することにより、当該暗号文の生成に際しパラメータとして用いられた、前記第一の公開鍵を変換することで得られるデータを算出する第二の生成手段として、機能させること
を特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１１】
データ暗号化装置が、暗号文の生成に際しパラメータとして用いるデータを、データ復号化装置が回復する鍵回復方法であって、
前記データ暗号化装置は、第一の生成手段と、暗号化手段と、第二の生成手段と、付加手段とを備え、
前記第一の生成手段が、少なくとも１つの第一の公開鍵を変換することで得られるデータと前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、暗号文の生成に際しパラメータとして用いるデータを生成する第一の処理を実行し、
前記暗号化手段が、前記第一の処理の結果得られたデータをパラメータとして暗号文を生成する第二の処理を実行し、
前記第二の生成手段が、前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとの間において、一方の公開鍵を変換することで得られたデータが分かれば、他方の公開鍵を変換することで得られたデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第三の処理を実行し、
前記付加手段が、前記第二の処理で生成した暗号文に、前記第三の処理で生成したデータ値を付加する第四の処理を実行し、
前記データ復号化装置は、前記第二の公開鍵と対の秘密鍵を記憶する手段と、第一の算出手段と、第二の算出手段と、第三の算出手段と、復号手段とを備え、
前記第一の算出手段が、前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータを、当該第二の公開鍵と対の秘密鍵から求める第五の処理を実行し、
前記第二の算出手段が、前記第四の処理で暗号文に付加されたデータ値および前記第五の処理で求めたデータを、前記第三の処理で用いた関係式に代入することにより、前記少なくとも１つの第一の公開鍵を変換することで得られるデータを求める第六の処理を実行し、
前記第三の算出手段が、前記第六の処理で求めた前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第五の処理で求めた前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、前記第一の処理で生成した、前記第二の処理において暗号文生成のためのパラメータとして用いたデータを求める第七の処理を実行し、
前記復号手段が、前記第七の処理で求めたデータをパラメータとして、前記第二の処理で生成した暗号文を復号する第八の処理を実行すること
を特徴とする鍵回復方法。
【請求項１２】
請求項１１記載の鍵回復方法であって、
前記公開鍵を変換することで得られるデータとは、
生成した乱数と当該公開鍵とを作用させることで得られたデータであること
を特徴とする鍵回復方法。
【請求項１３】
データ暗号化装置にて、暗号文の生成に際しパラメータとして用いられるデータを、データ復号化装置にて回復する鍵回復システムであって、
前記データ暗号化装置は、
少なくとも１つの第一の公開鍵を変換することで得られるデータと前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、暗号文の生成に際しパラメータとして用いるデータを生成する第一の生成手段と、
前記第一の生成手段により生成されたデータをパラメータとして暗号文を生成する暗号化手段と、
前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとの間において、一方の公開鍵を変換することで得られるデータが分かれば、他方の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第二の生成手段と、
前記暗号化手段で生成した暗号文に、前記第二の生成手段で生成したデータ値を付加する付加手段と、を備え、
前記データ復号化装置は、
前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータを、当該第二の公開鍵と対の秘密鍵から求める第一の算出手段と、
前記付加手段により前記暗号化手段で生成した暗号文に付加されたデータ値、および前記第一の算出手段で求めたデータを、前記第二の生成手段で用いた関係式に代入することにより、前記少なくとも１つの第一の公開鍵を変換することで得られるデータを求める第二の算出手段と、
前記第二の算出手段で求めた前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の算出手段で求めた前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、前記第二の生成手段で生成した、前記暗号化手段において暗号文生成のためのパラメータとして用いるデータを求める第三の算出手段と、
前記第三の算出手段で生成したデータをパラメータとして、前記暗号化手段で生成した暗号文を復号する復号手段と、を備えていること
を特徴とする鍵回復システム。
【請求項１４】
暗号文を生成する情報処理装置であって、
少なくとも１つの第一の公開鍵を変換することで得られるデータと前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、暗号文の生成に際しパラメータとして用いるデータを生成する第一の生成手段と、
前記第一の生成手段により生成されたデータをパラメータとして暗号文を生成する暗号化手段と、
少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとの間において、一方の公開鍵を変換することで得られるデータが分かれば、他方の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第二の生成手段と、
前記暗号化手段で生成した暗号文に、前記第二の生成手段で生成したデータ値を付加する付加手段と、を備えていること
を特徴とする情報処理装置。
【請求項１５】
請求項１４記載の情報処理装置で生成された暗号文を復号する情報処理装置であって、
前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータを、当該第二の公開鍵と対の秘密鍵から求める第一の算出手段と、
前記暗号文に付加されたデータ値、および前記第一の算出手段で求めたデータを、前記第二の生成手段で用いた関係式に代入することで、前記少なくとも１つの第一の公開鍵を変換することで得られるデータを求める第二の算出手段と、
前記第二の算出手段で求めた前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の算出手段で求めた前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、前記第二の生成手段で生成した、前記暗号化手段において暗号文生成のためのパラメータとして用いるデータを求める第三の算出手段と、
前記第三の算出手段で生成したデータをパラメータとして、前記暗号化手段で生成した暗号文を復号する復号手段と、を備えていること
を特徴とする情報処理装置。
【請求項１６】
暗号文生成のための暗号化プログラムが記憶された、コンピュータ読み取り可能な記憶媒体であって、
当該暗号化プログラムは、コンピュータを、
少なくとも１つの第一の公開鍵を変換することで得られるデータと前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、暗号文の生成に際しパラメータとして用いるデータを生成する第一の生成手段、
前記第一の生成手段が生成したデータをパラメータとして暗号文を生成する暗号化手段、
前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとの間において、一方の公開鍵を変換することで得られるデータが分かれば、他方の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第二の生成手段、および、
前記暗号化手段が生成した暗号文に、前記第二の生成手段が生成したデータ値を付加する付加手段として、機能させること
を特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１７】
請求項１６記載のコンピュータ読み取り可能な記憶媒体に記憶された暗号化プログラムをコンピュータが実行することにより生成された暗号文を復号するための復号化プログラムが記憶された、コンピュータ読み取り可能な記憶媒体であって、
当該復号化プログラムは、コンピュータを、
前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータを、当該コンピュータに記憶されている当該第二の公開鍵と対の秘密鍵から算出する第一の算出手段、
前記暗号文に付加されたデータ値および前記第一の算出手段が算出したデータを、当該データ値生成のために用いた関係式に代入することにより、前記少なくとも１つの第一の公開鍵を変換することで得られるデータを算出する第二の算出手段、
前記第二の算出手段が算出した前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第一の算出手段が算出した前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータとに基づいて、前記暗号文生成のためのパラメータとして用いたデータを算出する第三の算出手段、および、
前記第三の算出手段が算出したデータを用いて、前記暗号文を復号する復号手段として、機能させること
を特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１８】
暗号文の生成に際しパラメータとして用いられる、公開鍵を変換することで得られるデータを、当該公開鍵と対の秘密鍵を用いることなく生成するための鍵回復プログラムが記憶された、コンピュータ読み取り可能な記憶媒体であって、
当該鍵回復プログラムは、コンピュータを、
暗号文を、当該暗号文の生成に際しパラメータとして用いられた第一の公開鍵を変換することで得られるデータと、少なくとも１つの第二の公開鍵を変換することで得られるデータとの間において、前記第二の公開鍵を変換することで得られるデータが分かれば、前記第一の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値と共に、受信する取得手段、
前記第二の公開鍵を変換することで得られるデータを、当該コンピュータに記憶されている当該第二の公開鍵と対の秘密鍵から算出する第一の算出手段、および、
前記暗号文と共に受信したデータ値および前記第二の公開鍵と対の秘密鍵から求めたデータを、前記関係式に代入することにより、当該暗号文の生成に際しパラメータとして用いられた、前記第一の公開鍵を変換することで得られるデータを算出する第二の算出手段として、機能させること
を特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１９】
暗号文の生成に際しパラメータとして用いられる、公開鍵を変換することで得られるデータを、当該公開鍵と対の秘密鍵を用いることなく生成するための鍵回復プログラムが記憶された、コンピュータ読み取り可能な記憶媒体であって、
当該鍵回復プログラムは、コンピュータを、
少なくとも１つの第一の公開鍵を変換することで得られるデータおよび前記第１の公開鍵と同数の第二の公開鍵を変換することで得られるデータに基づいて生成されたデータを、暗号文生成のためのパラメータとして用いることで生成された暗号文を、前記少なくとも１つの第一の公開鍵を変換することで得られるデータと、前記第１の公開鍵と同数の第二の公開鍵を変換することで得られるデータとの間において、一方の公開鍵を変換することで得られるデータが分かれば、他方の公開鍵を変換することで得られるデータを、直接あるいは間接に求めることができる関係式を満たすデータ値と共に、受信する取得手段、
前記第一の公開鍵と同数の第二の公開鍵を変換することで得られるデータを、当該コンピュータに記憶されている当該第二の公開鍵と対の秘密鍵から算出する第一の算出手段、および、
前記暗号文と共に受信したデータ値および前記第二の公開鍵と対の秘密鍵から求めたデータを、前記関係式に代入することにより、前記少なくとも１つの第一の公開鍵を変換することで得られるデータを算出し、このデータおよび前記第二の公開鍵と対の秘密鍵から求めたデータに基づいて、前記暗号文の生成のためのパラメータとして用いたデータを算出する第二の算出手段として、機能させること
を特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ暗号化などのコンピュータネットワークにおけるセキュリティを確保する技術に関し、特に、鍵回復（鍵供託）システムに関する。
【０００２】
【従来の技術】
電子メールなどのネットワークを介してやり取りされるデータのセキュリティを確保する技術として、公開鍵と呼ばれる数値データを用いてデータを暗号化し、当該暗号化したデータを、秘密鍵と呼ばれる数値データ（公開鍵とは異なる数値を持つ）を用いて復号化する、いわゆる公開鍵暗号化方式と呼ばれるデータ暗号化方式がある。
【０００３】
ところで、この公開鍵暗号化方式では、何らかの理由により秘密鍵を紛失してしまった場合、当該秘密鍵と対になる公開鍵で暗号化されたデータを復号化することは、実際上不可能となってしまう。たとえば、暗号化されたデータをファイルなどに保管しておき、後日、取り出そうとした場合に、秘密鍵がなければ、当該データを元に戻すことができない。これでは、データが失われたのと同じことになる。秘密鍵をなくすということは、実際上あり得る事態であり、この場合の救済策がないと困ることがある。
【０００４】
このため、過失などにより秘密鍵を紛失した場合に、暗号化されたデータを正しく復号できるようにすることで、個人や企業の機密情報をバックアップする鍵回復（あるいは鍵供託）システムが提案されている。
【０００５】
このシステムは、自己の秘密鍵を、機密管理を行う第三者（鍵保管機関）に供託しておくことで、自らが秘密鍵を紛失してしまった場合に備えようとするものである。たとえば、自己の秘密鍵を分割して複数の鍵保管機関に供託しておき、自己の秘密鍵を紛失してしまった場合には、複数の鍵保管機関に供託しておいた秘密鍵の一部各々について、排他的論理和や加算などの演算処理を行うことで、自己の秘密鍵を回復する。
【０００６】
これ等の技術については、たとえば、満保雅弘および岡本栄司の両氏が著した「ネットワーク暗号クリッパーのインパクト：bit, Vol. 28, No. 2, February, 1996」や、Silvio Micali氏が著した「Fair Cryptosystems :MIT/LCS1TR-579.c, Laboratory for Computer Science, Massachusette Institute of Technology, 1994/8」などに開示されている．
【０００７】
【発明が解決しようとする課題】
しかしながら、上記説明した従来の鍵回復システムでは、自己の公開鍵で暗号化されたデータを復号化する唯一の手段である秘密鍵を、自己以外の第三者（鍵保管機関）に供託しなければならない。当然、この秘密鍵を鍵保管機関に供託する場合にも、機密性を確保できる方法で行う必要があり、そのための手間がかかる。特に、秘密鍵を分割して、複数の鍵保管機関に供託するような場合には、ユーザにかかる負担が大きくなる。
【０００８】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、自己が所有する秘密鍵を第三者に知らせる必要のない鍵回復方法および装置を提供することにある。
【０００９】
【課題を解決するための手段】
上記課題を解決するために、本発明の第一の態様は、暗号文の生成に際しパラメータとして用いられた、公開鍵を変換することで得られたデータを、当該公開鍵と対の秘密鍵を用いることなく生成する鍵回復方法であって、
送信側において、
暗号文の生成に際しパラメータとして用いられた第一の公開鍵を変換することで得られたデータと、少なくとも１つの第二の公開鍵を変換することで得られたデータとの間において、前記第二の公開鍵を変換することで得られたデータが分かれば、前記第一の公開鍵を変換することで得られたデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第一の処理と、
前記暗号文に、前記第一の処理の結果得られたデータ値を付与する第二の処理と、を含み、
前記第二の公開鍵と対の秘密鍵を所有する受信側において、
前記第二の公開鍵を変換することで得られたデータを、当該第二の公開鍵と対の秘密鍵から求める第三の処理と、
前記第二の処理で暗号文に付加されたデータ値および前記第三の処理で求めたデータを、前記第一の処理で用いた関係式に代入することにより、当該暗号文の生成に際しパラメータとして用いられた、前記第一の公開鍵を変換することで得られたデータを求める第四の処理と、を含んでいる
ことを特徴とする。
【００１０】
ここで、公開鍵を変換することで得られたデータとは、たとえば、生成した乱数と公開鍵とを作用させることで得られたデータである。
【００１１】
本発明の第一の態様では、暗号文の生成に際しパラメータとして用いられた第一の公開鍵を変換することで得られたデータと、少なくとも１つの第二の公開鍵を変換することで得られたデータとの間において、前記第二の公開鍵を変換することで得られたデータが分かれば、前記第一の公開鍵を変換することで得られたデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を、暗号文に付与している。
【００１２】
ここで、第二の公開鍵を変換することで得られたデータは、当該第二の公開鍵と対になる秘密鍵から求めることができる。
【００１３】
このため、暗号文の生成に際しパラメータとして用いられた第一の公開鍵を変換することで得られたデータは、第二の公開鍵と対になる秘密鍵を所有する者によって、上記の関係式を満たすデータ値から求めることができる。
【００１４】
したがって、第一の公開鍵と対になる秘密鍵を用いることなく、暗号文を復号することができる。つまり、自己の秘密鍵（第一の公開鍵と対の秘密鍵）を自己以外の第三者（鍵保管機関）に供託しなくても、第二の公開鍵と対の秘密鍵を所有する者により、鍵回復を行うことが可能となる。
【００１５】
上述したように、従来の鍵回復システムでは、自己の秘密鍵を、鍵保管機関に供託しておかなければならなかった。当然、この秘密鍵を鍵保管機関に供託する場合にも、機密性を確保できる方法で行う必要があり、そのための手間がかかっていた。特に、秘密鍵を分割して、複数の鍵保管機関に供託するような場合には、ユーザにかかる負担が大きかった。これに対し、本発明の第一の態様では、そのような手間を省くことができ、ユーザにかかる負担を軽減することができる。
【００１６】
なお、本発明の第一の態様において、第二の公開鍵と対になる秘密鍵は、所定の演算（排他的論理和や加算など）を行うことで復元可能なように複数に分割されて、複数の情報処理装置に保持されるようにしてもよい。この場合、当該複数の情報処理装置の少なくとも１つにおいて、前記複数の情報処理装置各々が所有する前記秘密鍵の一部に対して前記所定の演算を行うことで、秘密鍵を復元させ、第二の公開鍵を変換することで得られたデータを、前記復元した秘密鍵から求めるようにすることが好ましい。
【００１７】
このようにすることで、前記取得手段は、前記第二の公開鍵を変換することで得られたデータを取得することが可能となる。
【００１８】
また、本発明の第二の態様は、暗号文の生成に際しパラメータとして用いられたデータを回復する鍵回復方法であって、
送信側において、
少なくとも１つの第一の公開鍵を変換することで得られたデータと前記第一の公開鍵と同数の第二の公開鍵を変換することで得られたデータとに基づいて、暗号文の生成に際しパラメータとして用いるデータを生成する第一の処理と、
前記第一の処理の結果得られたデータをパラメータとして暗号文を生成する第二の処理と、
前記少なくとも１つの第一の公開鍵を変換することで得られたデータと、前記第一の公開鍵と同数の第二の公開鍵を変換することで得られたデータとの間において、一方の公開鍵を変換することで得られたデータが分かれば、他方の公開鍵を変換することで得られたデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する第三の処理と、
前記第二の処理で生成した暗号文に、前記第三の処理で生成したデータ値を付加する第四の処理と、を含み、
前記第二の公開鍵と対の秘密鍵を所有する受信側において、
前記第一の公開鍵と同数の第二の公開鍵を変換することで得られたデータを、当該第二の公開鍵と対の秘密鍵から求める第五の処理と、
前記第四の処理で暗号文に付加されたデータ値および前記第五の処理で求めたデータを、前記第三の処理で用いた関係式に代入することにより、前記少なくとも１つの第一の公開鍵を変換することで得られたデータを求める第六の処理と、前記第六の処理で求めた前記少なくとも１つの第一の公開鍵を変換することで得られたデータと、前記第五の処理で求めた前記第一の公開鍵と同数の第二の公開鍵を変換することで得られたデータとに基づいて、前記第一の処理で生成した、前記第二の処理において暗号文生成のためのパラメータとして用いたデータを求める第七の処理と、を含んでいる
ことを特徴とする。
【００１９】
本発明の第二の態様では、暗号文生成のパラメータとして、第一の公開鍵を変換することで得られたデータの代わりに、第一の公開鍵を変換することで得られたデータと、この第一の公開鍵と同数の第二の公開鍵を変換することで得られたデータとに基づいて生成されたデータを用いている点で、本発明の第一の態様と異なる。
【００２０】
本発明の第二の態様では、第一の公開鍵を変換することで得られたデータは、第二の公開鍵と対の秘密鍵を所有する者によって、暗号文に付加されたデータ値から求めることができる。そして、第二の公開鍵と対の秘密鍵を所有する者は、暗号文に付加されたデータ値から求めた、第一の公開鍵を変換することで得られたデータと、第二の公開鍵と対の秘密鍵から求めた、第二の公開鍵を変換することで得られたデータとに基づいて、暗号文生成のパラメータとして用いたデータを求めることができる。
【００２１】
したがって、本発明の第一の態様と同様、第一の公開鍵と対になる秘密鍵を用いることなく、暗号文を復号することができる。つまり、自己の秘密鍵（第一の公開鍵と対の秘密鍵）を自己以外の第三者（鍵保管機関）に供託しなくても、第二の公開鍵と対の秘密鍵を所有する者により、鍵回復を行うことが可能となる。
【００２２】
なお、上述したように、本発明の第二の態様では、暗号文生成のパラメータとして、第一の公開鍵を変換することで得られたデータではなく、第一の公開鍵を変換することで得られたデータと、この第一の公開鍵と同数の第二の公開鍵を変換することで得られたデータとに基づいて生成されたデータを用いている。
【００２３】
したがって、第一の公開鍵と対の秘密鍵を所有する者であっても、暗号文に付加されたデータ値から第二の公開鍵を変換することで得られたデータを求めなければ、暗号文生成のパラメータとして用いたデータを得ることができない。
【００２４】
つまり、第一の公開鍵と対の秘密鍵を所有する者であっても、暗号文に、第一および第二の公開鍵を変換することで得られたデータ間において、一方の公開鍵を変換することで得られたデータが分かれば他方の公開鍵を変換することで得られたデータを求めることができる関係式を満たすデータ値が付加されていなければ、暗号文を復号することができない。一方、当該データ値が暗号文に付加されている場合は、第二の公開鍵と対の秘密鍵を所有する者も、暗号文を必ず復号することができる。
【００２５】
したがって、本発明の第二の態様は、たとえば、国境を越えてやり取りが行われる暗号化された機密データなど、防衛上の理由などにより、当該データ取引者の意志にかかわらず、政府などが当該データを復号できるようにすることが要求される鍵回復システムに好適である。
【００２６】
【発明の実施の形態】
以下に、本発明の第一実施形態について説明する。
【００２７】
本実施形態の鍵回復システムは、ネットワークを介して接続された複数の情報処理装置（たとえば、パーソナルコンピュータ）間で実現される。
【００２８】
図１は、本発明の第一実施形態が適用された鍵回復システムの概略構成を示す図である。
【００２９】
図１において、装置Ｓ１０１は、暗号データ送信側、すなわち、データ暗号化装置として機能する情報処理装置（たとえば、パーソナルコンピュータ）である。一方、装置Ａ１０２、Ｂ１０３、Ｃ１０４は、暗号データ受信側、すなわち、データ復号化装置として機能する情報処理装置（たとえば、パーソナルコンピュータ）である。これらの装置は、ネットワーク１０５を介して相互に接続されている。
【００３０】
なお、装置Ｓ１０１は、装置Ａ１０２が所有する秘密鍵ｄA１１０と対になる公開鍵ＱA１０７、装置Ｂ１０３が所有する秘密鍵ｄB１１１と対になる公開鍵ＱB１０８、そして、装置Ｃ１０４が所有する秘密鍵ｄC１１２と対になる公開鍵ＱC１０９を、あらかじめ取得しているものとする。
【００３１】
ここで、公開鍵ＱA１０７と秘密鍵ｄA１１０、公開鍵ＱB１０８と秘密鍵ｄB１１１、そして、公開鍵ＱC１０９と秘密鍵ｄC１１２は、各々楕円曲線暗号における公開鍵と秘密鍵である。
【００３２】
楕円曲線暗号とは、次式、
ｙ2＝ｘ3＋ａｘ＋ｂ
で表される楕円曲線上の２点（ｘ1，ｙ1）、（ｘ2，ｙ2）の加算（ｘ1，ｙ1）＋（ｘ2，ｙ2）や、整数倍倍演算ｋ（ｘ1，ｙ1）などを定義することにより生成される公開鍵暗号のことである。
【００３３】
公開鍵ＱA１０７と秘密鍵ｄA１１０、公開鍵ＱB１０８と秘密鍵ｄB１１１、および、公開鍵ＱC１０９と秘密鍵ｄC１１２は、各々以下に示す関係にある。
【００３４】
ＱA＝ｄAＰ
ＱB＝ｄBＰ
ＱC＝ｄCＰ
ここで、Ｐは楕円曲線上のベースポイントと呼ばれるものであって、楕円曲線暗号を計算するときのパラメータとして用いられる。
【００３５】
次に、図１に示す構成において、本実施形態の鍵回復システムが実施された場合の処理を簡単にする。
【００３６】
まず、データ暗号化装置として機能する装置Ｓ１０１での処理について、簡単に説明する。
【００３７】
装置Ｓ１０１は、暗号化すべきメッセージＭ１０６を、公開鍵ＱA１０７を変換することで得られたデータをパラメータとして、暗号化する。また、この公開鍵ＱA１０７を変換することで得られたデータと、公開鍵ＱB１０８を変換することで得られたデータと、公開鍵ＱC１０９を変換することで得られたデータとの間において、公開鍵ＱB１０８を変換することで得られたデータおよび公開鍵ＱC１０９を変換することで得られたデータが分かれば、公開鍵ＱA１０７を変換することで得られたデータを、直接あるいは間接に求めることができる関係式を満たすデータ値を生成する。
【００３８】
そして、メッセージＭ１０６の暗号文に、上記の生成したデータ値を付与して暗号文Ｃ１１３を生成し、装置Ａ１０２、Ｂ１０３、Ｃ１０４に送信する。
【００３９】
次に、データ復号化装置として機能する装置Ａ１０２、Ｂ１０３、Ｃ１０４での処理について、簡単に説明する。
【００４０】
まず、装置Ａ１０２が単独で暗号文Ｃ１１３を復号する場合の処理について、説明する。
【００４１】
装置Ａ１０２は、装置Ｓ１０１から送られてきた暗号文Ｃ１１３を受信すると、この暗号文Ｃ１１３を、秘密鍵ｄA１１０を変換することで得られたデータ（このデータは、公開鍵ＱA１０７を変換することで得られたデータと同じになる）をパラメータとして、復号化する。これにより、元のメッセージＭ１０６を得る。
【００４２】
次に、装置Ａ１０２が、装置Ｂ１０３、Ｃ１０４の協力を得て暗号文Ｃ１１３を復号する場合の処理について、説明する。
【００４３】
まず、装置Ｂ１０３、Ｃ１０４に対して、これらが各々所有する秘密鍵ｄE１１１、ｄC１１２を変換することで得られるデータを送信するように要求する。
【００４４】
これを受けて、装置Ｂ１０３、Ｃ１０４は、各々自己が所有する秘密鍵ｄB１１１、ｄC１１２を変換することで得られたデータを装置Ａ１０２に送信する。
【００４５】
次に、装置Ａ１０２は、装置Ｂ１０３から送られてきた秘密鍵ｄB１１１を変換することで得られたデータと、装置Ｃ１０４から送られてきた秘密鍵ｄC１１２を変換することで得られたデータと、装置Ｓ１０１から送られてきた暗号文Ｃ１１３に付与されたデータ値とを基に、公開鍵ＱA１０７を変換することで得られたデータを求める。そして、このデータをパラメータとして、暗号文Ｃ１１３を復号化する。これにより、元のメッセージＭ１０６を得る。
【００４６】
次に、装置Ｂ１０３が、装置Ｃ１０４の協力を得て暗号文Ｃ１１３を復号する場合の処理について説明する。
【００４７】
装置Ｂ１０３において、装置Ｓ１０１から送られてきた暗号文Ｃ１１３を復号しようとする場合、まず、装置Ｃ１０４に対して、この装置Ｃ１０４が所有する秘密鍵ｄC１１２を変換することで得られるデータを送信するように要求する。
【００４８】
これを受けて、装置Ｃ１０４は、自己が所有する秘密鍵ｄC１１２を変換することで得られたデータを、トークンＴ１１４として、装置Ｂ１０３に送信する。
【００４９】
次に、装置Ｂ１０３は、自己が所有する秘密鍵ｄB１１１を変換することで得られたデータと、装置Ｃ１０４から送られてきたトークンＴ１１４（秘密鍵ｄC１１２を変換することで得られたデータ）と、装置Ｓ１０１から送られてきた暗号文Ｃ１１３に付与されたデータ値とを基に、公開鍵ＱA１０７を変換することで得られたデータを求める。そして、このデータをパラメータとして、暗号文Ｃ１１３を復号化する。これにより、元のメッセージＭ１０６を得る。
【００５０】
なお、装置Ｃ１０４が、装置Ｂ１０３の協力を得て暗号文Ｃ１１３を復号する場合も、同じ要領で行う。
【００５１】
すなわち、装置Ｂ１０３に対して、この装置Ｂ１０４が所有する秘密鍵ｄB１１１を変換することで得られるデータを送信するように要求する。
【００５２】
次に、自己が所有する秘密鍵ｄC１１２を変換することで得られたデータと、装置Ｂ１０３から送られてきた、秘密鍵ｄB１１１を変換することで得られたデータと、装置Ｓ１０１から送られてきた暗号文Ｃ１１３に付与されたデータ値とを基に、公開鍵ＱA１０７を変換することで得られたデータを求める。そして、このデータをパラメータとして、暗号文Ｃ１１３を復号化する。
【００５３】
次に、本実施形態の鍵回復システムを構成する各装置について説明する。
【００５４】
まず、データ暗号化装置として機能する装置Ｓ１０１について説明する。
【００５５】
図２は、図１に示す装置Ｓ１０１の機能構成を示す図である。
【００５６】
なお、図２に示す機能構成は、パーソナルコンピュータなどの情報処理装置が備えるＣＰＵに所定のプログラムを実行させることで実現可能である。このプログラムは、たとえば、ＣＤ−ＲＯＭなど、ドライバを介してパーソナルコンピュータで読み取り可能な記憶媒体に格納しておけばよい。また、図２に示す機能構成は、情報処理装置に装着されたＩＣカード上において、実現されるように構成してもよい。
【００５７】
図２に示す装置Ｓ１０１では、ベースポイント生成部２１０２において、楕円曲線暗号におけるパラメータであるベースポイントＰが生成される。
【００５８】
このベースポイントＰは、乱数生成部２１１３で生成された乱数ｋとともに整数倍演算部２１２３へ入力される。これを受けて、整数倍演算部２１２３は、次式で示される処理を実行することで、データＲ２１０９を生成する。
【００５９】
Ｒ＝ｋＰ
このデータＲ２１０９は、暗号文Ｃ１１３の最初のデータとなる。
【００６０】
また、公開鍵ＱA１０７は、乱数生成部２１１３で生成された乱数ｋとともに、整数倍演算部２１１４へ入力される。これを受けて、整数倍演算部２１１４は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘA，ｙA）を生成する。
【００６１】
（ｘA，ｙA）＝ｋＱA
この（ｘA，ｙA）のうち、数値ｘAは、その後、ハッシュ値生成部２１１９に入力されて、ハッシュ値ｈ（ｘA）に変換される。
【００６２】
同様に、公開鍵ＱB１０８は、乱数生成部２１１３で生成された乱数ｋとともに、整数倍演算部２１１５へ入力される。これを受けて、整数倍演算部２１１５は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘB，ｙB）を生成する。
【００６３】
（ｘB，ｙB）＝ｋＱB
この（ｘB，ｙB）のうち、数値ｘBは、その後、ハッシュ値生成部２１２６に入力されて、ハッシュ値ｈ（ｘB）に変換される。
【００６４】
また、同様に、公開鍵ＱC１０９は、乱数生成部２１１３で生成された乱数ｋとともに、整数倍演算部２１１６へ入力される。これを受けて、整数倍演算部２１１６は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘC，ｙC）を生成する。
【００６５】
（ｘC，ｙC）＝ｋＱC
この（ｘC，ｙC）のうち、数値ｘCは、その後、ハッシュ値生成部２１２７に入力されて、ハッシュ値ｈ（ｘC）に変換される。
【００６６】
しきい値ロジック部２１２５は、ハッシュ値生成部２１２６、２１２７で生成したハッシュ値ｈ（ｘB）、ｈ（ｘC）が分かれば、ハッシュ値生成部２１１９で生成したハッシュ値ｈ（ｘA）を求めることができる条件式を満たす値ｆ1２１１０を生成する。この値ｆ1２１１０は、暗号文Ｃ１１３の２番目のデータとなる。
【００６７】
なお、このしきい値ロジック部２１２５の詳細については後述する。
【００６８】
メッセージＭ１０６は、まず、最初のＮビットデータ２１０７が圧縮・暗号化部２１２０に入力される。これを受けて、圧縮・暗号化部２１２０は、ハッシュ値生成部２１１９で生成されたハッシュ値ｈ（ｘA）を鍵２１００として、最初のＮビットデータ２１０７の圧縮・暗号化処理（これについては後述する）を行う。これによりデータＣ1２１１２を生成する。このデータＣ1２１１２は、暗号文Ｃ１１３の３番目のデータとなる。また、鍵２１００は、ハッシュ値生成部２１２１に入力されて、メッセージＭ１０６の２番目のＮビットデータを暗号化するための鍵２１２２に変換される。
【００６９】
上記の処理を、メッセージＭ１０６を構成する全てのＮビットデータに対して行うことで、暗号文Ｃ１１３を生成する。
【００７０】
なお、上記の説明において、ハッシュ値とは、入力データに対して、暗号変換に似た処理を施すことで得られる一定長の短いデータのことである。このハッシュ値を生成するための関数であるハッシュ関数には、次のような特性をもつことが要求される。
【００７１】
１．一方向性(one−way property)：あるハッシュ関数の出力値が与えられたとする。この出力値と同じ出力値をもたらすような別のメッセージを求めることが、計算量的に困難でなければならない。
【００７２】
２．衝突回避性(collision free property)：メッセージもハッシュ値も何であるかは問わない。とにかく同じハッシュ値となる二つの異なるメッセージを見つけることが計算量的に困難でなけらばならない。
【００７３】
このハッシュ関数には、従来より「ブロック暗号を利用したハッシュ関数」や「専用ブロック関数」などが存在する。本実施形態に用いるハッシュ値生成部は、これ等を利用することで実現可能である。
【００７４】
次に、図２に示すしきい値ロジック部２１２５での処理について説明する。
【００７５】
上述したように、しきい値ロジック部２１２５は、ハッシュ値ｈ（ｘB）、ｈ（ｘC）が分かれば、ハッシュ値ｈ（ｘA）を求めることができる条件式を満たす値ｆ1２１１０を生成する。
【００７６】
図３は、図２に示すしきい値ロジック部２１２５の機能構成を示す図である。
【００７７】
図３に示すように、しきい値ロジック部２１２５には、ｑAX２２０２、ｈ（ｘA）２２０３、ｈ（ｘB）２２０４、ｈ（ｘC）２２０５が入力される。
【００７８】
ここで、ｑAX２２０２は、図２において、公開鍵ＱA１０７のｘ座標値である。また、ｈ（ｘA）２２０３、ｈ（ｘB）２２０４、ｈ（ｘC）２２０５は、それぞれ、ハッシュ値生成部２１１９、２１２６、２１２７で生成されたハッシュ値である。
【００７９】
演算部２２０８は、次式で示される処理を実行することで、データｆ1２１１０を生成する。
【００８０】
ｆ1＝ｇ（ｑAX，ｈ（ｘA），ｈ（ｘB），ｈ(ｘC））
ここで、関数ｇは、
ｇ（ｘ，ａ1，ａ2，ａ3）＝ａ1＋ａ2・ｘ＋ａ3・ｘ2(mod ｎ）
で定義される。
【００８１】
したがって、演算部２２０８で生成されたデータｆ1は、ｑAXおよびｈ（ｘA）、ｈ（ｘB）、ｈ（ｘC）との間において、以下に示す方程式が成立する。
【００８２】
ｆ1＝ｈ（ｘA）＋ｈ（ｘB）・ｑAX＋ｈ（ｘC）・ｑAX2（mod n）
なお、上記の式において、mod ｎとは、ｎで割った余りをとるという処理を示す。たとえば、５（mod ２）＝１である。また、ｎは、ハッシュ値生成部２１１１９、２１２６、２１２７で用いるハッシュ関数ｈの出力長（すなわち、ハッシュ値）より長いビット数で表される整数である。
【００８３】
上記の式により、ｆ1、ｑAXの値が既知である場合、ｈ（ｘA），ｈ（ｘB），ｈ（ｘC）のうちのいずれか二つの値が分かれば、他の一つの値も分かることになる（未知数３、方程式数１の連立方程式となるため）。
【００８４】
次に、図２に示す圧縮・暗号化部２１２０、・・・での処理について、説明する。
【００８５】
図４は、図２に示す圧縮・暗号化部２１２０、・・・の機能構成を示す図である。
【００８６】
ここで、Ｎビットデータとは、図２において、メッセージＭ１０６を構成するＮビットデータ２１０７、・・・に相当する。また、データＣiは、図２において、圧縮・暗号化部２１２０、・・・が生成するデータＣ1２１１２、・・・を示す。さらに、鍵２３０９とは、図２において、鍵２１００、２１２２、・・・に相当する。
【００８７】
図４において、鍵２３０９が入力されると、拡張部２３１０はこの鍵２３０９を受け取ってコピーを複数個生成し、これ等を繋ぎ合わせてワーク鍵２３１１を生成する。
【００８８】
また、Ｎビットデータの最初のデータ区分である第１区分２３０３は、圧縮処理部２３１２において、ワーク鍵２３１１の一部をパラメータとして、ハフマン圧縮などにより圧縮（換字）処理が施される。そして、その結果が、１２８ビットの圧縮データ２３１３およびその端数データ２３１４として出力される。
【００８９】
１２８ビットの圧縮データ２３１３は、π関数処理部２３１５において、ワーク鍵２３１１の一部をパラメータとして、ブロック暗号処理が施され、１２８ビットのデータに変換される。その後、π関数処理部２３１６において、ワーク鍵２３１１の一部をパラメータとして、さらにブロック暗号処理が施されて、１２８ビットのデータに変換される。このデータが、生成すべきデータＣiの最初のデータｇ1２３０６となる。また、π関数処理部２３１５で生成された１２８ビットのデータは、拡張部２３１７に入力され、複数コピーされる。そして、これ等が繋ぎ合わされて、Ｎビットデータの２番目のデータ区分である第２区分２３０４を暗号化するためのワーク鍵２３１８となる。
【００９０】
また、Ｎビットデータの２番目のデータ区分である第２区分２３０４は、圧縮処理部２３１９において、ワーク鍵２３１８の一部をパラメータとして、ハフマン圧縮などにより圧縮（換字）処理が施される。そして、その結果が、圧縮データ２３２０および端数データ２３２１として出力される。ここで、圧縮データ２３２０は、第１区分２３０３を圧縮（換字）処理した際に生成された端数データ２３１４との合計ビット長が、１２８ビットとなるように生成される。
【００９１】
圧縮データ２３２０は、第１区分２３０３を圧縮（換字）処理した際に生成された端数データ２３１４とを繋ぎ合わされて、１２８ビットのデータになる。その後、π関数処理部２３２２において、ワーク鍵２３１８の一部をパラメータとして、ブロック暗号処理が施され、１２８ビットのデータに変換される。その後、π関数処理部２３２４において、ワーク鍵２３１８の一部をパラメータとして、さらにブロック暗号処理が施されて、１２８ビットのデータに変換される。このデータが、生成すべきデータＣiの２番目のデータｇ2２３０７となる。
【００９２】
なお、第２区分２３０４を圧縮（換字）処理した際に生成された端数データ２３２１がｒビット（ｒ≧１）である場合、ハッシュ値生成部２３２３は、鍵２３０９に対するハッシュ値を生成する。これを受けて、演算部２３２５は、ハッシュ値生成部２３２３で生成されたハッシュ値の上位ｒビットと、端数データ２３２１との排他的論理的をとり、ｒビットのデータを生成する。このデータが、生成すべきデータＣiの３番目のデータｇ3２３０８となる。
【００９３】
上記の処理により、Ｎビットデータに対する暗号データＣiが生成される。
【００９４】
本実施形態において、データ暗号化装置として機能する装置Ｓ１０１では、メッセージＭ１０６の暗号化において、初期値として、ハッシュ値ｈ（ｘA）を用いている。したがって、この装置Ｓ１０１で暗号化された暗号文Ｃ１１３を復号するためには、ハッシュ値ｈ（ｘA）求めればよい。
【００９５】
ところで、この装置Ｓ１０１では、しきい値ロジック部２１２５において、ハッシュ値ｈ（ｘB）、ｈ（ｘC）が分かれば、ハッシュ値ｈ（ｘA）を求めることができる条件式を満たす値ｆ1を生成し、このｆ1を暗号文Ｃ１１３に付加している。
【００９６】
このため、暗号文Ｃ１１３を受信した者（すなわち、ｆ1を取得した者）は、ｈ（ｘB）、ｈ（ｘC）（ただし、図２に示す例でいえば、さらにｑAXが必要）が分かれば、暗号化に用いたｈ（ｘA）を求めることができる。
【００９７】
よって、暗号文Ｃ１１３の復号は、公開鍵ＱAと対になる秘密鍵ｄAを所有する装置Ａ１０２（単独でハッシュ値ｈ（ｘA）を求めることが可能）のみならず、公開鍵ＱBと対になる秘密鍵ｄBを所有する装置Ｂ１０３（単独でハッシュ値ｈ（ｘB）を求めることが可能）、および公開鍵ＱCと対になる秘密鍵ｄCを所有する装置Ｃ１０４（単独でハッシュ値ｈ（ｘC）を求めることが可能）が協力することでも行うことができる。
【００９８】
前者は、１ out of １の復号ロジックであり、後者は２ out of ２の復号ロジックである。本実施形態によれば、このように、復号可能となる受信者数のしきい値制御が可能となる。
【００９９】
すなわち、暗号文Ｃ１１３を秘密鍵ｄA、ｄB、ｄCの所有者各々に対して同報通信（マルチキャスト）することで、秘密鍵ｄAの持ち主が単独で復号できるとともに、秘密鍵ｄB、ｄCの持ち主が協力すれば復号可能なようにすることができる。
【０１００】
なお、本実施形態に適用したデータ暗号は、メッセージＭを公開鍵を用いて、暗号文に変換するという点で、従来のＲＳＡ（Rivest,Shamir,Adleman）のような公開鍵暗号と同じである。しかし、図４に示すように、ハフマン圧縮等により圧縮が効くような通常のメッセージに対しては、暗号文の長さがメッセージの長さより短くなるという点で、従来の公開鍵暗号とは異なる。
【０１０１】
次に、データ復号化装置として機能する装置Ａ１０２、Ｂ１０３、Ｃ１０４について説明する。
【０１０２】
まず、装置Ａ１０２が自己が所有する秘密鍵ｄA１１０を用いて暗号文Ｃ１１３を復号する場合について説明する。
【０１０３】
図５は、図１に示す装置Ａ１０２が自己が所有する秘密鍵ｄA１１０を用いて暗号文Ｃ１１３を復号する場合における、当該装置Ａ１０２の機能構成を示す図である。
【０１０４】
なお、図５に示す機能構成は、パーソナルコンピュータなどの情報処理装置が備えるＣＰＵに所定のプログラムを実行させることで実現可能である。このプログラムは、たとえば、ＣＤ−ＲＯＭなど、ドライバを介してパーソナルコンピュータで読み取り可能な記憶媒体に格納しておけばよい。また、図５に示す機能構成は、情報処理装置に装着されたＩＣカード上において、実現されるように構成してもよい。
【０１０５】
図５において、装置Ａ１０２に暗号文Ｃ１１３が入力されると、演算部２６１９は、自己が格納している秘密鍵ｄA１１０（公開鍵ＱA１０７と対）を読み出す。そして、この秘密鍵ｄA１１０と、暗号文Ｃ１１３の最初のデータＲ２１０９との間で、次式を満たす楕円曲線上の点（ｘA，ｙA）を求める。
【０１０６】
（ｘA，ｙA）＝ｄAＲ
ハッシュ値生成部２６２０は、演算部２６１９で求めた（ｘA，ｙA）のうちのｘ座標値ｘAのハッシュ値ｈ（ｘA）を生成する。
【０１０７】
ここで、ハッシュ値ｈ（ｘA）は、図２に示すハッシュ値生成部２１１９で生成されたハッシュ値ｈ（ｘA）と一致する。この理由を以下に述べる。
【０１０８】
図２において、ハッシュ値生成部２１１９は、乱数生成部２１１３で生成した乱数ｋを用いて（ｘA,ｙA）＝ｋＱAを求め、このうちのｘ座標の数値ｘAに対するハッシュ値をｈ（ｘA）としている。
【０１０９】
これに対し、図５に示すハッシュ値生成部２６２０では、上記と同じ乱数ｋを用いてＲ＝ｋＰにより求められたＲを用いて、ｄAＲを求め、このうちのｘ座標の数値ｘA対するハッシュ値をｈ（ｘA）としている。
【０１１０】
ここで、楕円曲線暗号における秘密鍵と公開鍵との関係から、ＱA＝ｄAＰが成立する。したがって、
ｄAＲ＝ｄAｋＰ＝ｋｄAＰ＝ｋＱA＝（ｘA,ｙA）
となる。
【０１１１】
したがって、図５に示すハッシュ値生成部２６２０で生成されたハッシュ値ｈ（ｘA）は、図２に示すハッシュ値生成部２１１９で生成されたハッシュ値ｈ（ｘA）と一致する。
【０１１２】
復号・伸長化部２６１４は、ハッシュ値生成部２６２０で生成されたハッシュ値ｈ（ｘA）を鍵２６１３として、暗号文Ｃ１１３の３番目のデータＣ1２１１２（すなわち、メッセージＭ１０６の最初のＮビットデータに対する暗号データ）に対して、復号・伸長処理を行う。これにより、メッセージＭ１０６の最初のＮビットデータ２１０７を生成する。
【０１１３】
また、復号・伸長化部２６１７は、ハッシュ値生成部２６１５において、鍵２６１３を基に生成されたハッシュ値を新しい鍵２６１６として、暗号文Ｃ１１３の４番目のデータ（すなわち、メッセージＭ１０６の２番目のＮビットデータに対する暗号データ）に対して、復号・伸長処理を行う。これにより、メッセージＭ１０６の２番目のＮビットデータを生成する。
【０１１４】
上記の処理を、暗号文Ｃ１１３を構成する最後のデータまで、順次繰り返すことで、メッセージＭ１０６を復元する。
【０１１５】
ここで、図５に示す復号・伸長化部２６１４、２６１７、・・・について説明する。
【０１１６】
図６は、図５に示す復号・伸長化部２６１４、２６１７、・・・の機能構成を示す図である。
【０１１７】
図中、データＣiは、図５において、暗号文Ｃ１１３の３番目以降のデータＣ1２１１２、・・・を示す。また、Ｎビットデータとは、図５において、復号・伸長化部２６１４、２６１７、・・・が生成したＮビットデータ２１０７、・・・に相当する。さらに、鍵１９０５とは、図５において、鍵２６１３、２６１６に相当する。
【０１１８】
また、π-1関数処理部１９０７、１９１０、１９１４、１９１６は、図４に示すπ関数処理部２３１５、２３１６、２３２２、２３２４でのブロック暗号処理と逆関数の関係にある処理を行う。すなわち、π-1関数は、π関数の逆関数である。
【０１１９】
同じパラメータをπ関数とπ-1関数に設定した場合、データｍをπ関数によって変換して得られるデータπ（ｍ）を、さらに、π-1関数によって変換すると、元のデータｍに戻る。すなわち、π-1関数はπ関数と次式のような関係にある。
【０１２０】
ｍ＝π−１（π（ｍ））
また、伸長処理部１９１１、１９１７は、図４に示す圧縮処理部２３１２、２３１９での処理と逆変換の関係にある処理を行う。
【０１２１】
同じパラメータを圧縮処理部と伸長処理部に設定した場合、データｍを圧縮（換字）処理によって変換して得られるデータを、さらに、伸長（換字）処理によって変換すると、元のデータｍに戻る。
【０１２２】
図６において、鍵１９０５が入力されると、拡張部１９０６はこの鍵１９０５を受け取ってコピーを複数個生成し、これ等を繋ぎ合わせてワーク鍵１９２３を生成する。
【０１２３】
また、データＣiの最初の１２８ビットデータｇ1２３０６は、π-1関数処理部１９０７において、ワーク鍵１９２３の一部をパラメータとして、換字・転置処理が施されて１２８ビットデータ変換された後、π-1関数処理部１９１０において、ワーク鍵１９２３の一部をパラメータとして、さらに換字・転置処理が施されて、１２８ビットデータに変換される。
【０１２４】
π-1関数処理部１９１０の出力結果は、伸長処理部１９１１において、ワーク鍵１９２３の一部をパラメータとして、伸長（換字）処理が施される。そして、その結果が、伸長データ１９１２およびその端数データ１９１３として出力される。この１２８ビットの伸長データが、生成すべきＮビットデータのうちの第１区分のデータ２３０３となる。また、π-1関数処理部１９０７で生成された１２８ビットのデータは、拡張部１９０９に入力され、複数コピーされる。そして、これ等が繋ぎ合わされて、データＣiの２番目の１２８ビットデータｇ2２３０７を復号化するためのワーク鍵１９２４となる。
【０１２５】
データＣiの２番目の１２８ビットデータｇ2２３０７は、π-1関数処理部１９１４において、ワーク鍵１９２４の一部をパラメータとして、換字・転置処理が施されて１２８ビットデータに変換された後、π-1関数処理部１９１６において、ワーク鍵１９２４の一部をパラメータとして、さらに換字・転置処理が施されて、１２８ビットデータに変換される。
【０１２６】
π-1関数処理部１９１６の出力結果は、伸長処理部１９１７において、ワーク鍵１９２４の一部をパラメータとして、伸長（換字）処理が施される。そして、その結果が、伸長データ１９１８として出力される。
【０１２７】
データＣiの３番目のデータであるｒビットデータｇ3２３０８は、ハッシュ値生成部２３２３ａで生成された鍵１９０５に対するハッシュ値の上位ｒビットと共に、演算部２３２５ａに入力される。これを受けて、演算部２３２５ａは、ハッシュ値生成部２３２３aで生成されたハッシュ値の上位ｒビットをｈr、生成すべきｒビットデータをＤrとした場合に以下の式を満たすＤrを生成する。
【０１２８】
Ｄr eor ｈr＝ｇ2  ：ただし、eorは排他的論理和
演算部２３２５ａで生成されたｒビットデータＤrは、伸長処理部１９１９において、ワーク鍵１９２４の一部をパラメータとして、伸長（換字）処理が施される。そして、その結果は、データｇ1２３０６を伸長（換字）処理した際に生成された端数データ１９１３、および、データｇ2２３０７を伸長（換字）処理した際に生成された伸長データ１９１８と接続される。この接続されたデータが、生成すべきＮビットデータのうちの第２区分のデータ２３０４となる。
【０１２９】
これにより、Ｎビットデータが生成される。
【０１３０】
次に、装置Ａ１０１が鍵ｄA１１０を紛失してしまった場合に、装置Ｂ１０３、Ｃ１０４の協力を得て、暗号文Ｃ１１３を復号する場合について説明する。
【０１３１】
図７は、図１に示す装置Ａ１０１が鍵ｄA１１０を紛失してしまった場合に、装置Ｂ１０３、Ｃ１０４の協力を得て、暗号文Ｃ１１３を復号する場合における、装置Ａ１０２、Ｂ１０３、Ｃ１０４の機能構成を示す図である。ここで、図５に示すものと同じものには、同一の符号を付してある。
【０１３２】
なお、図７に示す機能構成は、パーソナルコンピュータなどの情報処理装置が備えるＣＰＵに所定のプログラムを実行させることで実現可能である。このプログラムは、たとえば、ＣＤ−ＲＯＭなど、ドライバを介してパーソナルコンピュータで読み取り可能な記憶媒体に格納しておけばよい。また、図７に示す機能構成は、情報処理装置に装着されたＩＣカード上において、実現されるように構成してもよい。
【０１３３】
まず、装置Ａ１０２は、受け取った暗号文Ｃ１１３の最初のデータＲ２１０９を、装置Ｂ１０３、Ｃ１０４へ各々送信する。
【０１３４】
これを受けて、装置Ｂ１０３は、自己が格納している秘密鍵ｄB１１１（公開鍵ＱB１０８と対）を読み出す。そして、演算部２６１９ａにおいて、装置Ａ１０２から送られてきた値Ｒとの間で、次式を満たす楕円曲線上の点（ｘB，ｙB）を求める。
【０１３５】
（ｘB，ｙB）＝ｄBＲ
その後、ハッシュ値生成部２６２０ａにおいて、演算部２６１９ａで求めた（ｘB，ｙB）のうちのｘ座標値ｘBのハッシュ値ｈ（ｘB）を生成し、これを装置Ａ１０２へ送信する。
【０１３６】
同様に、装置Ｃ１０４は、自己が格納している秘密鍵ｄC１１２（公開鍵ＱC１０９と対）を読み出す。そして、演算部２６２２において、装置Ａ１０２から送られてきた値Ｒとの間で、次式を満たす楕円曲線上の点（ｘC，ｙC）を求める。
【０１３７】
（ｘC，ｙC）＝ｄCＲ
その後、ハッシュ値生成部２６２３において、演算部２６２２で求めた（ｘC，ｙC）のうちのｘ座標値ｘCのハッシュ値ｈ（ｘC）を生成し、これを装置Ａ１０２へ送信する。
【０１３８】
ここで、ハッシュ値ｈ（ｘB）、ｈ（ｘC）は、図２に示すハッシュ値生成部２１２６、２１２７で生成されたハッシュ値ｈ（ｘB）、ｈ（ｘC）と、各々一致する。この理由を以下に述べる。
【０１３９】
図２に示すハッシュ値生成部２１２６では、乱数生成部２１１３で生成した乱数ｋを用いて（ｘB,ｙB）＝ｋＱBを求め、このうちのｘ座標の数値ｘBに対するハッシュ値をｈ（ｘB）としている。同様に、ハッシュ値生成部２１２７では、乱数ｋを用いて（ｘC,ｙC）＝ｋＱCを求め、このうちのｘ座標の数値ｘCに対するハッシュ値をｈ（ｘC）としている。
【０１４０】
これに対し、図７に示すハッシュ値生成部２６２０ａでは、上記と同じ乱数ｋを用いてＲ＝ｋＰにより求められたＲを用いて、ｄBＲを求め、このうちのｘ座標の数値ｘB対するハッシュ値をｈ（ｘB）としている。同様に、ハッシュ値生成部２６２３では、Ｒを用いてｄCＲを求め、このうちのｘ座標の数値ｘC対するハッシュ値をｈ（ｘC）としている。
【０１４１】
ここで、楕円曲線暗号における秘密鍵と公開鍵との関係から、ＱB＝ｄBＰ、ＱC＝ｄCＰが成立する。したがって、
ｄBＲ＝ｄBｋＰ＝ｋｄBＰ＝ｋＱB＝（ｘB,ｙB）
ｄCＲ＝ｄCｋＰ＝ｋｄCＰ＝ｋＱC＝（ｘC,ｙC）
となる。
【０１４２】
したがって、図７に示すハッシュ値生成部２６２０ａ、２６２３で各々生成されたハッシュ値ｈ（ｘB）、ｈ（ｘC）と、図２に示すハッシュ値生成部２１２６、２１２７で各々生成されたハッシュ値ｈ（ｘB）、ｈ（ｘC）とは、各々一致する。
【０１４３】
次に、装置Ａ１０２は、装置Ｂ１０３、Ｃ１０４からハッシュ値ｈ（ｘB）、ｈ（ｘC）を受け取ると、しきい値逆算ロジック部２６１２による処理を開始する。
【０１４４】
しきい値逆算ロジック部２６１２は、まず、装置Ｂ１０３から送られてきたハッシュ値ｈ（ｘB）と、装置Ｃ１０４から送られてきたハッシュ値ｈ（ｘC）と、公開鍵ＱA１０７のｘ座標値ｑAXと、暗号文Ｃ１１３の２番目データｆ1２１１０と、を受け取る。
【０１４５】
そして、以下に示す方程式を満たすｈ（ｘA）を生成する。
【０１４６】
ｆ1＝ｈ（ｘA）＋ｈ（ｘB）・ｑAX＋ｈ（ｘC）・ｑAX2（mod n）
ここで、上記の方程式は、図２に示すハッシュ値生成部２１１９、２１２６、２１２７で各々生成されたハッシュ値ｈ（ｘA）、ｈ（ｘB）、ｈ（ｘC）のうち、ｈ（ｘB）とｈ（ｘC）とを既知とした場合に相当する。
【０１４７】
上述したように、図７に示すハッシュ値生成部２６２０ａ、２６２３で各々生成されたハッシュ値ｈ（ｘB）、ｈ（ｘC）は、図２に示すハッシュ値生成部２１２６、２１２７で各々生成されたハッシュ値ｈ（ｘB）、ｈ（ｘC）と一致する。したがって、上記の方程式より求めたｈ（ｘA）は、図２に示すハッシュ値生成部２１１９で生成したハッシュ値ｈ（ｘA）と一致することになる。
【０１４８】
復号・伸長化部２６１４は、しきい値逆ブロック部２６１２で生成されたハッシュ値ｈ（ｘA）を鍵２６１３として、暗号文Ｃ１１３の３番目のデータＣ1２１１２（すなわち、メッセージＭ１０６の最初のＮビットデータに対する暗号データ）に対して、復号・伸長処理を行う。これにより、メッセージＭ１０６の最初のＮビットデータ２１０７を生成する。
【０１４９】
また、復号・伸長化部２６１７は、ハッシュ値生成部２６１５において、鍵２６１３を基に生成されたハッシュ値を新しい鍵２６１６として、暗号文Ｃ１１３の４番目のデータ（すなわち、メッセージＭ１０６の２番目のＮビットデータに対する暗号データ）に対して、復号・伸長処理を行う。これにより、メッセージＭ１０６の２番目のＮビットデータを生成する。
【０１５０】
上記の処理を、暗号文Ｃ１１３を構成する最後のデータまで、順次繰り返すことで、メッセージＭ１０６を復元する。
【０１５１】
なお、図７では、装置Ａ１０１が鍵ｄA１１０を紛失してしまった場合に、装置Ｂ１０３、Ｃ１０４の協力を得て、暗号文Ｃ１１３を復号する場合について説明した。ここで、装置Ｂ１０３、Ｃ１０４は、公開鍵の供託を受けて保管するよううな機関（鍵保管機関）であってもよい。
【０１５２】
次に、装置Ｂ１０３が、装置Ｃ１０４の協力を得て、装置Ｓ１０１から送られてきた暗号文Ｃ１１３を復号化する場合について、説明する。
【０１５３】
図８は、図１において、装置Ｂ１０３が装置Ｃ１０４の協力を得て、装置Ｓ１０１から送られてきた暗号文Ｃ１１３を復号化する場合における、装置Ｂ１０３、Ｃ１０４の機能構成を示す図である。ここで、図７に示すものと同じものには同一の符号を付してある。
【０１５４】
なお、図８に示す機能構成は、情報処理装置などのパーソナルコンピュータが備えるＣＰＵに所定のプログラムを実行させることで実現可能である。このプログラムは、たとえば、ＣＤ−ＲＯＭなど、ドライバを介してパーソナルコンピュータで読み取り可能な記憶媒体に格納しておけばよい。また、図８に示す機能構成は、情報処理装置に装着されたＩＣカード上において、実現されるように構成してもよい。
【０１５５】
図８において、装置Ｂ１０３に、公開鍵ＱA１０７と、暗号文Ｃ１１３とが入力されると、演算部２６１９ａは、自己が格納している秘密鍵ｄB１１１（公開鍵ＱB１０８と対）を読み出す。
【０１５６】
そして、この秘密鍵ｄB１１１と、暗号文Ｃ１１３の最初のデータＲ２１０９との間で、次式を満たす楕円曲線上の点（ｘB，ｙB）を求める。
【０１５７】
（ｘB，ｙB）＝ｄBＲ
ハッシュ値生成部２６２０ａは、演算部２６１９で求めた（ｘB，ｙB）のうちのｘ座標値ｘBのハッシュ値ｈ（ｘB）を生成する。
【０１５８】
また、装置Ｂ１０３は、暗号文Ｃ１１３の最初のデータＲ２１０９を装置Ｃ１０４へ送信する。
【０１５９】
これを受けて、装置Ｃ１０４は、自己が格納している秘密鍵ｄC１１２（公開鍵ＱC１０９と対）を読み出す。そして、演算部２６２２において、この秘密鍵ｄC１１２と、暗号文Ｃ１１３の最初のデータＲ２１０９との間で、次式を満たす楕円曲線上の点（ｘC，ｙC）を求める。
【０１６０】
（ｘC，ｙC）＝ｄCＲ
その後、ハッシュ値生成部２６２３において、演算部２６２２で求めた（ｘC，ｙC）のうちのｘ座標値ｘCのハッシュ値ｈ（ｘC）を生成して、装置Ｂ１０３へ送信する。
【０１６１】
次に、装置Ｂ１０３は、装置Ｃ１０４からハッシュ値ｈ（ｘC）を受け取ると、しきい値逆算ロジック部２６１２による処理を開始する。
【０１６２】
しきい値逆算ロジック部２６１２は、まず、ハッシュ値生成部２６２０ａで生成したハッシュ値ｈ（ｘB）と、装置Ｃ１０４から送られてきたハッシュ値ｈ（ｘC）と、公開鍵Ｑ1１０７のｘ座標値ｑAXと、暗号文Ｃ１１３の２番目データｆ1２１１０と、を受け取る。
【０１６３】
そして、以下に示す方程式を満たすｈ（ｘA）を生成する。
【０１６４】
ｆ1＝ｈ（ｘA）＋ｈ（ｘB）・ｑAX＋ｈ（ｘC）・ｑAX2（mod n）
復号・伸長化部２６１４は、しきい値逆ブロック部２６１２で生成されたハッシュ値ｈ（ｘA）を鍵２６１３として、暗号文Ｃ１１３の３番目のデータＣ1２１１２（すなわち、メッセージＭ１０６の最初のＮビットデータに対する暗号データ）に対して、復号・伸長処理を行う。これにより、メッセージＭ１０６の最初のＮビットデータ２１０７を生成する。
【０１６５】
また、復号・伸長化部２６１７は、ハッシュ値生成部２６１５において、鍵２６１３を基に生成されたハッシュ値を新しい鍵２６１６として、暗号文Ｃ１１３の４番目のデータ（すなわち、メッセージＭ１０６の２番目のＮビットデータに対する暗号データ）に対して、復号・伸長処理を行う。これにより、メッセージＭ１０６の２番目のＮビットデータを生成する。
【０１６６】
上記の処理を、暗号文Ｃ１１３を構成する最後のデータまで、順次繰り返すことで、メッセージＭ１０６を復元する。
【０１６７】
上記の本実施形態では、公開鍵ＱB１０８から求めたハッシュ値ｈ（ｘB）と、公開鍵ＱC１０９から求めたハッシュ値ｈ（ｘC）と、メッセージＭ１０６の暗号化に用いた、公開鍵ＱA１０７から求めたハッシュ値ｈ（ｘA）との間において、ハッシュ値ｈ（ｘB）およびハッシュ値ｈ（ｘC）が分かれば、ハッシュ値ｈ（ｘA）を直接あるいは間接に求めることができる関係式を満たす値ｆ1２１１０を暗号文Ｃ１１３に付与している。
【０１６８】
ここで、装置Ｂ１０３、Ｃ１０４は、各々自己が所有する秘密鍵ｄB１１１、ｄC１１２からハッシュ値ｈ（ｘB）、ｈ（ｘC）を求めることができる。
【０１６９】
したがって、メッセージＭ１０６の暗号化に用いたハッシュ値ｈ（ｘA）は、装置Ｂ１０３、Ｃ１０４が協力することで求めることができるので、装置Ａ１０２は、自己が所有する秘密鍵ｄA１１０を紛失した場合でも、装置Ｂ１０３、Ｃ１０４の協力を得ることで、暗号文Ｃ１１３を元のメッセージＭ１０６に復元することができる。
【０１７０】
これにより、以下に示す効果を奏する。
【０１７１】
▲１▼自己の秘密鍵を、鍵保管機関に供託しておく必要がなくなる。
【０１７２】
従来の鍵回復システムでは、自己の秘密鍵を、鍵保管機関に供託しておかなければならなかった。当然、この秘密鍵を鍵保管機関に供託する場合にも、機密性を確保できる方法で行う必要があり、そのための手間がかかっていた。特に、秘密鍵を分割して、複数の鍵保管機関に供託するような場合には、ユーザにかかる負担が大きかった。本実施形態では、自己（装置Ａ１０２に相当）の秘密鍵を鍵保管機関（装置Ｂ１０３、Ｃ１０４に相当）に供託しなくても、鍵保管機関は、自己の公開鍵で暗号化したデータを復号することができるので、上記のような手間を省くことができ、ユーザにかかる負担を軽減することができる。
【０１７３】
▲２▼自己が所有する秘密鍵が、自己以外の第三者（鍵保管機関）に知られることがなくなる。
【０１７４】
従来の鍵回復システムでは、かりに、鍵保管機関から、自己の秘密鍵に関する情報が漏洩してしまった場合、安全なデータ暗号化を行うことができなくなってしまうおそれがあった。本実施形態では、自己が所有する秘密鍵を鍵保管機関に預ける必要がなくなるのでそのような問題は生じない。くわえて、上記の値ｆ1２１１０は、公開鍵ＱB１０８と公開鍵ＱC１０９との値に依存するので、協力を得ようとする者（具体的には、その者が所有する秘密鍵と対になる公開鍵）を変えることで、値ｆ1２１１０の内容を変更することができる。このため、機密性を更に向上させることができる。
【０１７５】
なお、本実施形態は、暗号文にｆ1、ｆ2、・・・、ｆnを含めることで、ｎ人の相手に対してマルチキャストを行い、そのｎ人のうちの何人かは単独で復号可能とし、残りの者は少なくとも二人が協力することで、復号可能とすることもできる。あるいは、ｎ人各々が単独で復号可能とすることもできる。
【０１７６】
図９は、図２に示すしきい値ロジック部の変形例の機能構成を示す図である。
【０１７７】
図９に示すように、しきい値ロジック部２１２５ａには、３つのデータｘA２４０２、ｘB２４０３、ｘC２４０４が入力される。
【０１７８】
ここで、ｘA２４０２、ｘB２４０３、ｘC２４０６は、それぞれ、図２に示す整数倍演算部２１１４、２１１５、２１１６で生成されたｘ座標値である。
【０１７９】
演算部２４０８は、次式で示される処理を実行することで、データｆ1２４０６を生成する。
【０１８０】
ｆ1＝ｘA−ｈ（ｘB）
ここで、ｈ（ｘB）は、図２に示すハッシュ値生成部２１２６で生成されたハッシュ値である。
【０１８１】
また、演算部２４１０は、次式で示される処理を実行することで、データｆ2２４０７を生成する。
【０１８２】
ｆ2＝ｘA−ｈ（ｘC）
ここで、ｈ（ｘC）は、図２に示すハッシュ値生成部２１２７で生成されたハッシュ値である。
【０１８３】
図９に示すしきい値ロジック２１２５ａを用いることで、図２に示す装置Ｓ１０１は、暗号化処理途中に生成される乱数kと公開鍵ＱB１０８とを基にデータｆ1２４０６を生成することになる。このデータｆ1を暗号文Ｃ１１３に付与することにより、公開鍵ＱB１０８と対の関係にある秘密鍵ｄB１１１の持ち主（すなわち、装置Ｂ１０３）も、単独で暗号文Ｃ１１３を復号することができる。
【０１８４】
同様に、暗号化処理途中に生成される乱数ｋと公開鍵ＱC１０９とを基に、データｆ2２４０７を生成することになる。このデータｆ2を暗号文Ｃ１１３に付与することにより、公開鍵ＱC１０９と対の関係にある秘密鍵ｄC１１２の持ち主（すなわち、装置Ｃ１０４）も、単独で暗号文Ｃ１１３を復号することができる。
【０１８５】
すなわち、暗号文Ｃ１１３を秘密鍵ｄA１１０、ｄB１１１、ｄC１１２のそれぞれの持ち主に同報通信（マルチキャスト）することで、これ等の持ち主各々が単独で復号することが可能となる。また、通信相手を一人増やすには、単に、ハッシュ値の長さ分（たとえば、８０ビット）のデータを増やせばよいので、同報暗号通信を効率的に行うことができる。ここで、ハッシュ関数には一方向性だけが要求され、衝突回避性は要求されない。
【０１８６】
また、本実施形態では、暗号文Ｃ１１３の最初データとして、整数倍演算部２１２３で生成した、楕円曲線上の点Ｒのｘ座標値、ｙ座標値の両方を含むものについて説明した。しかしながら、ｘ座標値、ｙ座標値のいずれか一方のみを含むようにした場合でも、本発明の鍵回復システムを実現することができる。
【０１８７】
図１０は、図１に示すデータ暗号化装置として機能する装置Ｓの変形例の機能構成を示す図である。
【０１８８】
ここで、図２に示す装置Ｓ１０１と同じものには、同じ符号を付している。
【０１８９】
図１０に示す装置Ｓ１０１ａは、整数倍演算部２１２３に代えて整数倍演算部２５０１を用いた点で、図２に示す装置Ｓ１０１と異なる。その他の構成は、図２に示すものと同じである。
【０１９０】
整数倍演算部２５０１は、ベースポイントＰ２１０２と、乱数生成部２１１３で生成された乱数ｋとを受け取って、Ｒ＝ｋＰで示される処理を実行する点で、図２に示す整数倍演算部２１２３と同じである。しかしながら、上記の式で求められるＲのうち、ｘ座標の値ＲX２５０２のみを出力する点で異なる。
【０１９１】
したがって、図１０に示す装置Ｓ１０１ａでは、このデータＲX２５０２が、暗号文Ｃ１１３ａの最初のデータとなる。
【０１９２】
図１０に示す装置Ｓ１０１ａでは、図２に示す装置Ｓ１０１に比べて、生成される暗号文の長さが幾分短くなる。
【０１９３】
すなわち、図２に示す装置Ｓ１０１では、整数倍演算部２１２３において、楕円曲線上の点Ｒ＝ｋＰを求め、求めたＲのｘ座標値ＲXおよびｙ座標値ＲYを出力して、暗号文Ｃ１１３の最初のデータＲ２１０９としていた。
【０１９４】
これに対し、図１０に示す装置Ｓ１０１ａでは、整数倍演算部２５０１において、楕円曲線上の点Ｒ＝ｋＰを求め、この求めたＲのうちのｘ座標値ＲXのみを出力して、暗号文Ｃ１１３ａの最初のデータＲX２５０２としている。
【０１９５】
したがって、図１０に示す装置Ｓ１０１ａで生成された暗号文Ｃ１１３ａは、図２に示す装置Ｓ１０１で生成された暗号文Ｃ１１３よりも、ｙ座標値ＲYのデータ分（たとえば、１６０ビット）だけ短くなる。
【０１９６】
図１１は、図１に示すデータ復号化装置として機能する装置Ａの変形例であり、装置Ａが鍵ｄA１１０を紛失してしまった場合に、装置Ｂ、Ｃの協力を得て、図１０に示す装置Ｓが生成した暗号文Ｃ１１３ａを復号する場合における機能構成を示す図である。
【０１９７】
ここで、図７に示すものと同じものには、同じ符号を付してある。
【０１９８】
図１１に示す装置Ａ１０１ａが図７に示す装置Ａ１０１と異なる点は、演算部２６１１を設けた点である。
【０１９９】
演算部２６１１は、暗号文Ｃ１１３ａの最初のデータＲX２５０２との間で、次の楕円曲線方程式を満足するy座標値ＲYを求める。
【０２００】
ＲY2＝ＲX3＋ａ・ＲX＋ｂ
通常、この方程式の解ＲYは２つ存在する。一方の解をｒとすると、他方は−ｒとなる（ただし、楕円曲線としてｙ2＋ｘｙ＝ｘ3＋ａｘ＋ｂを用いる場合には、一方の解をｒとすると、他方はＲX＋ｒとなる）。演算部２６１１は、どちらか任意の一方をとり、他方を無視する。ここでは、ｒの方をとって、Ｒ＝（ＲX，r）を、装置Ｂ１０３、Ｃ１０４へ送信している。
【０２０１】
したがって、装置Ｂ１０３、Ｃ１０４では、このＲ＝（ＲX，r）を基にハッシュ値ｈ（ｘB）、ｈ（ｘC）が生成されることになる。
【０２０２】
ここで、ハッシュ値ｈ（ｘB）、ｈ（ｘC）は、以下に示すような特徴を有する。
【０２０３】
かりに、装置Ｂ１０３、Ｃ１０４に各々送信されるデータが、Ｒ＝（ＲX,ｒ）ではなく、Ｒ´＝（ＲX,−ｒ）であったとする。
【０２０４】
この場合、装置Ｂ１０３の演算部２６１９ａでは、（ｘB´,ｙB´)＝ｄBＲ´の計算が行われことになる。
【０２０５】
しかし、楕円曲線上の演算の性質より、（ｘB´,ｙB´）＝（ｘB,−ｙB）となる。
【０２０６】
すなわち、楕円曲線ｙ2＝ｘ3＋ａｘ＋ｂを用いた演算では、−（ｘ,ｙ）＝（ｘ,−ｙ）が成立する。このとき、（ｘB,ｙB）＝ｄB（ＲX、ｒ）であったとすると、
ｄB（ＲX,−ｒ）＝ｄB（−（ＲX，ｒ））＝−ｄB（ＲX,ｒ）＝（ｘB,−ｙB）
となる。
【０２０７】
また、楕円曲線ｙ2＋ｘｙ＝ｘ3＋ａｘ＋ｂを用いた演算では、−（ｘ，ｙ）＝（ｘ,ｘ＋ｙ）が成立する。このとき、（ｘB,ｙB）＝ｄB（ＲX,ｒ）であったとすると、
ｄB（ＲX,ＲX＋ｒ）＝ｄB（−（ＲX,ｒ））＝−ｄB（ＲX,ｒ）＝（ｘB,ｘB＋ｙB）
となる。
【０２０８】
したがって、ｈ（ｘB´）＝ｈ（ｘB）となる。
【０２０９】
つまり、Ｒ＝（ＲX，ｒ）を入力しても、あるいはＲ´＝（ＲX,−r）を入力しても、装置Ｂ１０３が出力するハッシュ値ｈ（ｘB）は変化しない。
【０２１０】
同様に、Ｒ＝（ＲX，ｒ）を入力しても、あるいはＲ´＝（ＲX,−r）を入力しても、装置Ｃ１０４が出力するハッシュ値ｈ（ｘC）も変化しない。
【０２１１】
したがって、装置Ａ１０２の演算部２６１１において、方程式の解Ｒｙが２つ存在するにもかかわらず、どちらか任意の一方のみを装置Ｂ１０３、Ｃ１０４に送信した場合でも、本発明の鍵回復システムを実現できる。
【０２１２】
さらに、本実施形態は、図１において、装置Ｓ１０１で用いた公開鍵ＱA１０７、ＱB１０８、ＱC１０９と対になる秘密鍵ｄA１１０、ｄB１１１、ｄC１１２の少なくとも１つを、排他的論理和や加算などの所定の演算を行うことで復元可能なように複数に分割し、これ等を複数の情報処理装置に保持させるようにしてもよい。
【０２１３】
この場合、当該複数の情報処理装置の少なくとも１つにおいて、前記複数の情報処理装置各々が所有する秘密鍵の一部に対して、前記所定の演算を行うことで秘密鍵を復元させることができる。
【０２１４】
図１２は、本発明の第一実施形態の変形例が適用された鍵回復システムの概略構成を示す図である。
【０２１５】
ここでは、公開鍵ＱC１０９と対になる秘密鍵ｄC１１２を、排他的論理和や加算などの所定の演算を行うことで復元可能なように２つ（ｄC1１１２ａ、ｄC2１１２ｂ）に分割し、これ等を２つの装置Ｃ1１０４ａ、Ｃ2１０４ｂに保持させた場合の例を示している。
【０２１６】
この場合でも、２つの装置Ｃ1１０４ａ、Ｃ2１０４ｂが互いに協力して、各々が所有する秘密鍵ｄC1１１２ａ、ｄC2１１２ｂについて、排他的論理和や加算などの演算処理を行うことにより、秘密鍵ｄC１１２を回復することが可能である。
【０２１７】
そして、回復した秘密鍵ｄC１１２からハッシュ値ｈ（ｘC）を求めることができる。
【０２１８】
さらに、本実施形態では、楕円曲線暗号として、
ｙ2＝ｘ3＋ａｘ＋ｂ
に基づくものを用いたが、その代わりに、楕円曲線暗号として、
ｙ2＋ｘｙ＝ｘ3＋ａｘ＋ｂ
に基づくものを用いてもよい。
【０２１９】
以上、本発明の第一実施形態について説明した。
【０２２０】
次に、本発明の第二実施形態について説明する。
【０２２１】
図１３は、本発明の第二実施形態が適用された鍵回復システムの概略構成を示す図である。
【０２２２】
図１３において、送信装置Ａ５０１は、暗号データ送信側、すなわち、データ暗号化装置として機能する装置である。受信装置Ｂ５０２は、暗号データ受信側、すなわち、データ復号化装置として機能する装置ある。第１鍵管理装置５０３ａおよび第２鍵管理装置５０３ｂは、鍵回復機関、すなわち、送信装置Ａ５０１で暗号化されたデータを必要に応じて回復する機能を有する装置である。これらの装置は、ネットワーク５０５を介して相互に接続されている。
【０２２３】
なお、送信装置Ａ５０１は、受信装置Ｂ５０２が所有する秘密鍵ｄB1５１０ａ、ｄB2５１０ｂと対になる公開鍵ＱB1５０７ａ、ＱB2５０７ｂと、第１鍵管理装置５０３ａが所有する秘密鍵ｄE1５１１ａと対になる公開鍵ＱE1５０８ａと、第２鍵管理装置５０３ｂが所有する秘密鍵ｄE2５１１ｂと対になる公開鍵ＱE2５０８ｂとを、あらかじめ取得しているものとする。
【０２２４】
ここで、公開鍵ＱB1５０７ａと秘密鍵ｄB1５１０ａ、公開鍵ＱB2５０７ｂと秘密鍵ｄB2５１０ｂ、公開鍵ＱE1５０８ａと秘密鍵ｄE1５１１ａ、そして、公開鍵ＱE2５０８ｂと秘密鍵ｄE2５１１ｂは、第一実施形態と同様、楕円曲線暗号における公開鍵と秘密鍵である。
【０２２５】
次に、図１３に示す構成において、本実施形態の鍵回復システムが実施された場合の処理を簡単に説明する。
【０２２６】
まず、データ暗号化装置として機能する送信装置Ａ５０１での処理について説明する。
【０２２７】
送信装置Ａ５０１は、入力された通信文Ｍ５０６を暗号化する。この際、暗号に用いる鍵として、比較的短いビット長（本実施形態では、４０ビットデータとする）のものを用いる場合は、公開鍵ＱB1５０７ａを変換することで得られた４０ビット長のデータをパラメータ（鍵）として、通信文Ｍ５０６を暗号化する。そして、生成した暗号文Ｃ５１３を、受信装置Ｂ５０２へ送信する。
【０２２８】
一方、比較的長いビット長（本実施形態では、１２８ビットデータとする）のものを用いる場合は、公開鍵ＱB1５０７ａを変換することで得られたデータ、公開鍵ＱB2５０７ｂを変換することで得られたデータ、公開鍵ＱE1５０８ａを変換することで得られたデータ、および、公開鍵ＱE2５０９を変換することで得られたデータを基に、１２８ビット長のデータを生成し、これをパラメータ（鍵）として、通信文Ｍ５０６を暗号化する。
【０２２９】
また、この公開鍵ＱB1５０７ａ、ＱB2５０７ｂを各々変換することで得られたデータと、公開鍵ＱE1５０８ａ、公開鍵ＱE2５０８ｂを各々変換することで得られたデータとの間において、一方のデータが分かれば他方のデータを、直接あるいは間接に求めることができる関係式を満たすデータ値ｆ1、ｆ2を生成する。
【０２３０】
そして、通信文Ｍ１０６の暗号文に、上記の生成したデータ値ｆ1、ｆ2を付与して暗号文Ｃ５１３を生成し、これを受信装置Ｂ５０２へ送信する。
【０２３１】
次に、データ復号装置として機能する受信装置Ｂ５０２での処理について、簡単に説明する。
【０２３２】
受信装置Ｂ５０２は、送信装置Ａ５０１から送られてきた暗号文Ｃ５１３を受信すると、この暗号文にデータ値ｆ1、ｆ2が付与されているか否かを調べる。
【０２３３】
付与されていない場合は、公開鍵ＱB1５０７ａと対の秘密鍵ｄB1５１０ａから、暗号文生成にパラメータとして用いたデータ、すなわち、公開鍵ＱB1５０７ａを変換することで得られた４０ビット長のデータを生成する。そして、このデータを用いて、暗号文Ｃ５１３を復号化し、通信文Ｍ５０６を得る。
【０２３４】
一方、暗号文Ｃ５１３にデータ値ｆ1、ｆ2が付与されている場合、まず、自己が所有する秘密鍵ｄB1５１０ａ、秘密鍵ｄB2５１０ｂを用いて、公開鍵ＱB1５０７ａ、ＱB2５０７ｂを各々変換することで得られたデータを求める。
【０２３５】
次に、公開鍵ＱB1５０７ａ、ＱB2５０７ｂを各々変換することで得られたデータと、暗号文Ｃ５１３に付加されたデータ値ｆ1、ｆ2とを、送信装置Ａ５０１においてデータ値ｆ1、ｆ2生成のために用いた関係式に入力することで、公開鍵ＱE1５０８ａ、公開鍵ＱE2５０８ｂを各々変換することで得られたデータを求める。
【０２３６】
それから、公開鍵ＱB1５０７ａ、公開鍵ＱB2５０７ｂ、公開鍵ＱE1５０８ａ、公開鍵ＱE2５０９を各々変換することで得られたデータを基に、送信装置Ａ５０１において暗号文生成のために用いた１２８ビット長のデータを生成する。そして、このデータを用いて、暗号文Ｃ５１３を復号化し、通信文Ｍ５０６を得る。
【０２３７】
次に、鍵回復機関として機能を有する第１、２鍵保管装置５０３ａ、５０３ｂでの処理について、説明する。
【０２３８】
第１、２鍵保管装置５０３ａ、５０３ｂは、必要に応じて、送信装置Ａ５０１か生成した、データ値ｆ1、ｆ2が付加された暗号文Ｃ５１３を入手し、互いに協力して、元の通信文Ｍ５０６を得る。
【０２３９】
たとえば、第１鍵保管装置５０３ａが、データ値ｆ1、ｆ2が付加された暗号文Ｃ５１３を入手した場合、まず、自己が所有する秘密鍵ｄE1５１１ａを用いて、公開鍵ＱE1５０８ａを変換することで得られたデータを求める。また、第２鍵保管装置５０３ｂに、公開鍵ＱE2５０８ｂを変換することで得られたデータを送るように依頼する。
【０２４０】
これを受けて、第２鍵保管装置５０３ｂは、自己が所有する秘密鍵ｄE2５１１ｂを用いて、公開鍵ＱE2５０８ｂを変換することで得られたデータを求め、これを第１鍵保管装置５０３ａに送信する。
【０２４１】
次に、第１鍵保管装置５０３ａは、公開鍵ＱE1５０８ａ、ＱE2５０８ｂを各々変換することで得られたデータと、暗号文Ｃ５１３に付加されたデータ値ｆ1、ｆ2とを、送信装置Ａ５０１においてデータ値ｆ1、ｆ2生成のために用いた関係式に入力することで、公開鍵ＱB1５０７ａ、公開鍵ＱB2５０７ｂを各々変換することで得られたデータを求める。
【０２４２】
それから、公開鍵ＱB1５０７ａ、公開鍵ＱB2５０７ｂ、公開鍵ＱE1５０８ａ、公開鍵ＱE2５０９を各々変換することで得られたデータを基に、送信装置Ａ５０１において暗号文生成のために用いた１２８ビット長のデータを生成する。そして、このデータを用いて、暗号文Ｃ５１３を復号化し、メッセージＭ５０６を得る。
【０２４３】
次に、本実施形態の鍵回復システムを構成する各装置について説明する。
【０２４４】
まず、データ暗号化装置として機能する送信装置Ａ５０１について説明する。
【０２４５】
図１４は、図１３に示す送信装置Ａ５０１の機能構成を示す図である。
【０２４６】
なお、図１４に示す機能構成は、パーソナルコンピュータなどの情報処理装置が備えるＣＰＵに所定のプログラムを実行させることで実現可能である。このプログラムは、たとえば、ＣＤ−ＲＯＭなど、ドライバを介してパーソナルコンピュータで読み取り可能な記憶媒体に格納しておけばよい。また、情報処理装置に装着されたＩＣカード上において、実現されるように構成してもよい。
【０２４７】
図１４において、選択部５００１は、たとえば、操作者の指示により入力された鍵長選択信号（通信文Ｍ５０６を暗号するための鍵として、１２８ビットのものを用いるか、あるいは４０ビットのものを用いるかを選択するための信号）に応じて、通信文Ｍ５０６を入力する暗号モジュール５００２、５００３を決定する。
【０２４８】
鍵選択信号が「長」を示している場合、通信文Ｍ５０６は、１２８ビット鍵を用いて２ out of ４の復号ロジックに対応した暗号化を行う暗号モジュール５００２に入力される。一方、鍵選択信号が「長」を示していない場合は、４０ビット鍵を用いて１ out of １の復号ロジックに対応した暗号化を行う暗号モジュール５００２に入力される。
【０２４９】
図１５は、４０ビット鍵を用いて１ out of １の復号ロジックに対応した暗号化を行う暗号モジュール５００２の機能構成図である。
【０２５０】
図１４に示す暗号モジュール５００２では、ベースポイント生成部５６０２において、楕円曲線暗号におけるパラメータであるベースポイントＰが生成される。このベースポイントＰは、乱数生成部５６０７で生成された乱数ｋとともに整数倍演算部５６０８へ入力される。これを受けて、整数倍演算部５６０８は、次式で示される処理を実行することで、データＲ５６１７を生成する。
【０２５１】
Ｒ＝ｋＰ
このデータＲ５６１７は、暗号文Ｃ５１３の最初のデータとなる。
【０２５２】
また、公開鍵ＱB1５０７ａは、乱数生成部２１１３で生成された乱数ｋとともに、整数倍演算部５６０９へ入力される。これを受けて、整数倍演算部５６０９は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘ，ｙ）を生成する。
【０２５３】
（ｘ，ｙ）＝ｋＱB1
共通鍵暗号部５６１２は、整数倍演算部５６０９で生成された（ｘ，ｙ）のうち、ｘの下位４０ビットをパラメータ（鍵）として、通信文Ｍ５０６を暗号化する。これにより、通信暗号文５６１８を生成する。そして、このデータをデータＲ５６１７に繋げて、暗号文Ｃ５１３を作成する。
【０２５４】
図１６は、１２８ビット鍵を用いて２ out of ４の復号ロジックに対応した暗号化を行う暗号モジュール５００２の機能構成図である。
【０２５５】
図１６において、ベースポイント生成部５１０２において、楕円曲線暗号におけるパラメータであるベースポイントＰが生成される。
【０２５６】
このベースポイントＰは、乱数生成部５１１３で生成された乱数ｋとともに整数倍演算部５１２３へ入力される。これを受けて、整数倍演算部５１２３は、次式で示される処理を実行することで、データＲ５１０９を生成する。
【０２５７】
Ｒ＝ｋＰ
このデータＲ５１０９は、暗号文Ｃ５１３の最初のデータとなる。
【０２５８】
また、公開鍵ＱB1５０７ａは、乱数生成部５１１３で生成された乱数ｋとともに、整数倍演算部５１１４へ入力される。これを受けて、整数倍演算部５１１４は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘ1，ｙ1）を生成する。
【０２５９】
（ｘ1，ｙ1）＝ｋＱB1
この（ｘ1，ｙ1）のうち、ｘ1は、その後、ハッシュ値生成部５１１９に入力されて、ハッシュ値ｈ（ｘ1）に変換される。
【０２６０】
同様に、公開鍵ＱB2５０７ｂは、乱数生成部５１１３で生成された乱数ｋとともに、整数倍演算部５１１５へ入力される。これを受けて、整数倍演算部５１１５は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘ2，ｙ2）を生成する。
【０２６１】
（ｘ2，ｙ2）＝ｋＱB2
この（ｘ2，ｙ2）のうち、ｘ2は、その後、ハッシュ値生成部５１２６に入力されて、ハッシュ値ｈ（ｘ2）に変換される。
【０２６２】
また、同様に、公開鍵ＱE1５０８ａは、乱数生成部５１１３で生成された乱数ｋとともに、整数倍演算部５１１６へ入力される。これを受けて、整数倍演算部５１１６は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘ3，ｙ3）を生成する。
【０２６３】
（ｘ3，ｙ3）＝ｋＱE1
この（ｘ3，ｙ3）のうち、ｘ3は、その後、ハッシュ値生成部５１２７に入力されて、ハッシュ値ｈ（ｘ3）に変換される。
【０２６４】
さらに、同様に、公開鍵ＱE2５０８ｂは、乱数生成部５１１３で生成された乱数ｋとともに、整数倍演算部５１２４へ入力される。これを受けて、整数倍演算部５１２４は、次式で示される処理を実行することで、上記の楕円曲線上の点（ｘ4，ｙ4）を生成する。
【０２６５】
（ｘ4，ｙ4）＝ｋＱE2
この（ｘ4，ｙ4）のうち、ｘ4は、その後、ハッシュ値生成部５１２８に入力されて、ハッシュ値ｈ（ｘ4）に変換される。
【０２６６】
しきい値ロジック部５１２５は、ハッシュ値生成部５１１９、５１２６、５１２７、５１２８で生成したハッシュ値ｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）のうち、いずれか２つのハッシュ値が分かれば、残り２つのハッシュ値を求めることができる条件式を満たす値ｆ1５１１０、ｆ2５１１１を生成する。この値ｆ1５１１０、ｆ2５１１１は、それぞれ、暗号文５１３の２番目、３番目のデータとなる。なお、このしきい値ロジック部５１２５の詳細については後述する。
【０２６７】
鍵生成部５１２０は、ハッシュ値生成部５１１９、５１２６、５１２７、５１２８で生成したハッシュ値ｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）の総和の下位１２８ビットを、通信文Ｍ５０６を暗号化するための鍵として生成する。
【０２６８】
共通鍵暗号部５１０８は、鍵生成部５１２０で生成された１２８ビット鍵を用いて通信文Ｍ５０６を暗号化する。これにより、通信暗号文５１１２を生成する。そして、このデータをデータｆ2５１１１に繋げて、暗号文Ｃ５１３を作成する。
【０２６９】
次に、図１６に示すしきい値ロジック部５１２５について説明する。
【０２７０】
上述したように、しきい値ロジック部５１２５は、ハッシュ値ｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）のうち、いずれか２つのハッシュ値が分かれば、残り２つのハッシュ値を求めることができる条件式を満たす値ｆ1５１１０、ｆ2５１１１を生成する。
【０２７１】
図１７は、図１６に示すしきい値ロジック部５１２５の機能構成を示す図である。
【０２７２】
図１７に示すように、しきい値ロジック部５１２５には、５つのデータｑ1x５２０２、ｈ（ｘ1）５２０３、ｈ（ｘ2）５２０４、ｈ（ｘ3）５２０５、ｈ（ｘ4）５２０６が入力される。
【０２７３】
ここで、ｑ1x５２０２は、図１６において、公開鍵ＱB1５０７ａのｘ座標値である。また、ｈ（ｘ1）５２０３、ｈ（ｘ2）５２０４、ｈ（ｘ3）５２０５、ｈ（ｘ4）５２０６は、それぞれ、ハッシュ値生成部５１１９、５１２６、５１２７、５１２８で生成されたハッシュ値である。
【０２７４】
演算部５２０８は、次式で示される処理を実行することで、データｆ1５１１０を生成する。
【０２７５】
ｆ1＝ｇ（ｑ1x，ｈ（ｘ1），ｈ（ｘ2），ｈ（ｘ3），ｈ（ｘ4））
また、演算部５２１０は、次式で示される処理を実行することで、データｆ2５１１１を生成する。
【０２７６】
ｆ2＝ｇ（ｈ（ｑ1x），ｈ（ｘ1），ｈ（ｘ2），ｈ（ｘ3），ｈ（ｘ4）)
なお、上記の式ｆ1、ｆ2において、関数ｇは、
ｇ（ｘ，ａ1，ａ2，ａ3，ａ4）＝ａ1＋ａ2・ｘ＋ａ3・ｘ2＋ａ4・ｘ3(modｎ）
で定義されものである。
【０２７７】
したがって、演算部５２０８、５２１０で生成されたデータｆ1、ｆ2は、ｑ1xおよびｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）との間において、以下に示す四元連立方程式が成立する。
【０２７８】
ｆ1＝ｈ（ｘ1）＋ｈ（ｘ2）・ｑ1x＋ｈ（ｘ3）・ｑ1x2＋ｈ（ｘ4）・ｑ1x3（mod n）
ｆ2＝ｈ（ｘ1）＋ｈ（ｘ2）・ｈ（ｑ1x）＋ｈ（ｘ3）・ｈ（ｑ1x）2＋ｈ（ｘ4）・ｈ（ｑ1x）3（mod n）
よって、ｆ1、ｆ2、ｑ1xの値が既知である場合、ｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）のうちのいずれか二つの値が分かれば、他の二つの値も分かることになる（未知数２、方程式数２の連立方程式となるため）。
【０２７９】
次に、データ復号化装置として機能する受信装置Ｂ５０２について説明する。
【０２８０】
図１８は、図１３に示す受信装置Ｂ５０２の機能構成を示す図である。
【０２８１】
なお、図１８に示す機能構成は、パーソナルコンピュータなどの情報処理装置が備えるＣＰＵに所定のプログラムを実行させることで実現可能である。このプログラムは、たとえば、ＣＤ−ＲＯＭなど、ドライバを介してパーソナルコンピュータで読み取り可能な記憶媒体に格納しておけばよい。また、情報処理装置に装着されたＩＣカード上において、実現されるように構成してもよい。
【０２８２】
図１８において、選択部５９０１は、入力された暗号文Ｃ５１３にデータｆ1、ｆ2が付加されているか否かに応じて、暗号文Ｃ５１３を入力する復号モジュール５９０２、５９０３を決定する。
【０２８３】
暗号文Ｃ５１３にデータｆ1、ｆ2が付加されている場合、暗号文Ｃ５１３は、１２８ビット鍵を用いて２ out of ４の復号を行う復号モジュール５９０２に入力される。一方、データｆ1、ｆ2が付加されていない場合は、４０ビット鍵を用いて１ out of １の復号を行う復号モジュール５９０３に入力される。
【０２８４】
図１９は、４０ビット鍵を用いて１ out of １の復号を行う復号モジュール５９０３機能構成図である。
【０２８５】
図１９において、暗号文Ｃ５１３が入力されると、演算部５６１９は、自己が格納している秘密鍵ｄB1５１０ａ（公開鍵ＱB1５０７ａと対）を読み出す。そして、この秘密鍵ｄB1５１０ａと、暗号文Ｃ５１３の最初のデータＲ５６１７との間で、次式を満たす楕円曲線上の点（ｘ，ｙ）を求める。
【０２８６】
（ｘ，ｙ）＝ｄB1Ｒ
ここで、上記楕円曲線上の点（ｘ，ｙ）は、図１５に示す演算部５６０９で求めた楕円曲線上の点（ｘ，ｙ）と一致する。その理由は、上記第一の実施形態で述べたとおりである。
【０２８７】
共通鍵暗号部５６２２は、整数倍演算部５６１９で生成された（ｘ，ｙ）のうち、ｘの下位４０ビットをパラメータ（鍵）として、通信暗号文５６１８を復号する。これにより、元の通信文Ｍ５０６を得る。
【０２８８】
図２０は、１２８ビット鍵を用いて２ out of ４の復号を行う復号モジュール５９０２の機能構成図である。
【０２８９】
図２０において、暗号文Ｃ５１３が入力されると、演算部５７１９は、自己が格納している秘密鍵ｄB1５１０ａ（公開鍵ＱB1５０７ａと対）を読み出す。そして、この秘密鍵ｄB1５１０ａと、暗号文Ｃ５１３の最初のデータＲ５１０９との間で、次式を満たす楕円曲線上の点（ｘ1，ｙ1）を求める。
【０２９０】
（ｘ1，ｙ1）＝ｄB1Ｒ
その後、ハッシュ値生成部５７２０において、演算部５７１９で求めた（ｘ1，ｙ1）のうちのｘ座標値ｘ1のハッシュ値ｈ（ｘ1）を生成する。
【０２９１】
同様に、演算部５７２２は、自己が格納している秘密鍵ｄB2５１０ｂ（公開鍵ＱB2５０７ｂと対）を読み出す。そして、この秘密鍵ｄB2５１０ｂと、暗号文Ｃ５１３の最初のデータＲ５１０９との間で、次式を満たす楕円曲線上の点（ｘ2，ｙ2）を求める。
【０２９２】
（ｘ2，ｙ2）＝ｄB2Ｒ
その後、ハッシュ値生成部５７２３において、演算部５７２２で求めた（ｘ2，ｙ2）のうちのｘ座標値ｘ2のハッシュ値ｈ（ｘ2）を生成する。
【０２９３】
ここで、ハッシュ値ｈ（ｘ1）、ｈ（ｘ2）は、図１６に示すハッシュ値生成部５１１９、５１２６で生成されたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）と、各々一致する。その理由は、上記第一の実施形態で述べたとおりである。
【０２９４】
しきい値逆算ロジック部５７１２は、ハッシュ値生成部５７２０、５７２３で生成されたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）と、公開鍵ＱB1５０７ａのｘ座標値ｑ1Xと、暗号文Ｃ５１３の２番目および３番目のデータｆ1５１１０、ｆ2５１１１と、を受け取る。
【０２９５】
そして、以下に示す方程式を満たすｈ（ｘ3）、ｈ（ｘ4）を生成する。
【０２９６】
ｆ1＝ｈ（ｘ1）＋ｈ（ｘ2）・ｑ1x＋ｈ（ｘ3）・ｑ1x2＋ｈ（ｘ4）・ｑ1x3（mod n）
ｆ2＝ｈ（ｘ1）＋ｈ（ｘ2）・ｈ（ｑ1x）＋ｈ（ｘ3）・ｈ（ｑ1x）2＋ｈ（ｘ4）・ｈ（ｑ1x）3（mod n）
ここで、上記の方程式は、図１６に示すハッシュ値生成部５１１９、５１２６、５１２７、５１２８で各々生成されたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）のうち、ｈ（ｘ1）およびｈ（ｘ2）を既知とした場合に相当する。
【０２９７】
上述したように、図２０に示すハッシュ値生成部５７２０、５７２３で各々生成されたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）は、図１６に示すハッシュ値生成部５１１９、５１２６で各々生成されたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）と各々一致する。したがって、上記の方程式より求めたｈ（ｘ3）、ｈ（ｘ4）は、図１６に示すハッシュ値生成部５１２７、５１２８で生成したハッシュ値ｈ（ｘ3）、ｈ（ｘ4）と一致することになる。
【０２９８】
鍵生成部５７１３は、ハッシュ値生成部５７２０、５７２３で生成したハッシュ値ｈ（ｘ1）、ｈ（ｘ2）、および、しきい値逆ロジック部５７１２で求めたハッシュ値ｈ（ｘ3）、ｈ（ｘ4）の総和の下位１２８ビットを、通信文暗号文５１１２を復号するための鍵として生成する。
【０２９９】
共通鍵暗号部５７１４は、鍵生成部５７１３で生成された１２８ビット鍵を用いて通信暗号文５１１２を復号する。これにより、元の通信文Ｍ５０６を得る。
【０３００】
次に、鍵回復機関として機能する第１、第２鍵管理装置５０３ａ、５０３ｂについて説明する。
【０３０１】
上述したように、第１、第２鍵管理装置５０３ａ、５０３ｂは、必要に応じて、いずれか一方が送信装置Ａ５０１において、１２８ビット鍵により暗号化された暗号文Ｃ５１３を入手し、他方の協力を得て復号して、元の通信文Ｍ５０６を得る。
【０３０２】
ここでは、第１鍵管理装置５０３ａが暗号文Ｃ５１３を入手した場合を例にとって説明する。
【０３０３】
図２１は、第１、第２鍵管理装置５０３ａ、５０３ｂの機能構成図である。
【０３０４】
図２１において、第１鍵管理装置５０３ａは、暗号文Ｃ５１３が入力されると、第２鍵管理装置５０３ｂに、暗号文Ｃ５１３の最初のデータＲ５１０９を通知する。これを受けて、第２鍵管理装置５０３ｂの演算部５４２２は、自己が格納している秘密鍵ｄE2５１１ｂ（公開鍵ＱE2５０８ｂと対）を読み出す。そして、この秘密鍵ｄE2５１１ｂと、暗号文Ｃ５１３の最初のデータＲ５１０９との間で、次式を満たす楕円曲線上の点（ｘ4，ｙ4）を求める。
【０３０５】
（ｘ4，ｙ4）＝ｄE2Ｒ
その後、ハッシュ値生成部５４２３において、演算部５４２２で求めた（ｘ3，ｙ4）のうちのｘ座標値ｘ4のハッシュ値ｈ（ｘ4）を生成する。そして、生成したハッシュ値ｈ（ｘ4）を、第１鍵管理装置５０３ａに通知する。
【０３０６】
また、第１鍵管理装置５０３ａにおいて、演算部５４１９は、自己が格納している秘密鍵ｄE1５１１ａ（公開鍵ＱE1５０８ａと対）を読み出す。そして、この秘密鍵ｄE1５１１ａと、暗号文Ｃ５１３の最初のデータＲ５１０９との間で、次式を満たす楕円曲線上の点（ｘ3，ｙ3）を求める。
【０３０７】
（ｘ3，ｙ3）＝ｄE1Ｒ
その後、ハッシュ値生成部５４２０において、演算部５４１９で求めた（ｘ3，ｙ3）のうちのｘ座標値ｘ3のハッシュ値ｈ（ｘ3）を生成する。
【０３０８】
ここで、ハッシュ値ｈ（ｘ3）、ｈ（ｘ4）は、図１６に示すハッシュ値生成部５１２７、５１２８で生成されたハッシュ値ｈ（ｘ3）、ｈ（ｘ4）と、各々一致する。その理由は、上記第一の実施形態で述べたとおりである。
【０３０９】
しきい値逆算ロジック部５４１２は、ハッシュ値生成部５４２０、および第２鍵管理装置５０３ｂのハッシュ値生成部５４２３で各々生成されたハッシュ値ｈ（ｘ3）、ｈ（ｘ4）と、公開鍵ＱB1５０７ａのｘ座標値ｑ1Xと、暗号文Ｃ５１３の２番目および３番目のデータｆ1５１１０、ｆ2５１１１と、を受け取る。
【０３１０】
そして、以下に示す方程式を満たすｈ（ｘ1）、ｈ（ｘ2）を生成する。
【０３１１】
ｆ1＝ｈ（ｘ1）＋ｈ（ｘ2）・ｑ1x＋ｈ（ｘ3）・ｑ1x2＋ｈ（ｘ4）・ｑ1x3（mod n）
ｆ2＝ｈ（ｘ1）＋ｈ（ｘ2）・ｈ（ｑ1x）＋ｈ（ｘ3）・ｈ（ｑ1x）2＋ｈ（ｘ4）・ｈ（ｑ1x）3（mod n）
ここで、上記の方程式は、図１６に示すハッシュ値生成部５１１９、５１２６、５１２７、５１２８で各々生成されたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）、ｈ（ｘ3）、ｈ（ｘ4）のうち、ｈ（ｘ3）およびｈ（ｘ4）を既知とした場合に相当する。
【０３１２】
上述したように、図２１に示すハッシュ値生成部５４２０、５４２３で各々生成されたハッシュ値ｈ（ｘ3）、ｈ（ｘ4）は、図１６に示すハッシュ値生成部５１２７、５１２８で各々生成されたハッシュ値ｈ（ｘ3）、ｈ（ｘ4）と一致する。したがって、上記の方程式より求めたｈ（ｘ1）、ｈ（ｘ2）は、図１６に示すハッシュ値生成部５１１９、５１２６で生成したハッシュ値ｈ（ｘ1）、ｈ（ｘ2）と一致することになる。
【０３１３】
鍵生成部５４１３は、ハッシュ値生成部５４２０、５４２３で生成したハッシュ値ｈ（ｘ3）、ｈ（ｘ4）、および、しきい値逆ロジック部５４１２で求めたハッシュ値ｈ（ｘ1）、ｈ（ｘ2）の総和の下位１２８ビットを、通信文暗号文５１１２を復号するための鍵として生成する。
【０３１４】
共通鍵暗号部５４１４は、鍵生成部５４１３で生成された１２８ビット鍵を用いて通信暗号文５１１２を復号する。これにより、元の通信文Ｍ５０６を得る。
【０３１５】
上記の第二実施形態では、１２８ビット鍵を用いた暗号処理において、通信暗号文５１１２生成のパラメータとして、公開鍵ＱB1を変換することで得られたデータ（このデータは、受信装置Ｂ５０２が所有する秘密鍵ｄB1から求めることができる）の代わりに、公開鍵ＱB1、公開鍵ＱB2、公開鍵ＱE、公開鍵ＱE2を各々変換することで得られたデータに基づいて生成されたデータを用いている点で、本発明の第一実施形態と異なる。
【０３１６】
第二実施形態において、公開鍵ＱB1、ＱB2を各々変換することで得られたデータは、第１、第２の鍵管理装置５０３ａ、５０３ｂにおいて、暗号文Ｃ５１３に付加されたデータ値ｆ1、ｆ2から求めることができる。そして、第１、第２の鍵管理装置５０３ａ、５０３ｂは、暗号文Ｃ５１３に付加されたデータ値ｆ1、ｆ2からから求めた、公開鍵ＱB1、ＱB2を各々変換することで得られたデータと、自己が所有する秘密鍵ｄE1、ｄE2と対の公開鍵ＱE1、ＱE2を各々変換することで得られたデータとに基づいて、通信暗号文５１１２生成のパラメータとして用いたデータを求めることができる。
【０３１７】
したがって、本発明の第一実施形態と同様、受信装置Ｂ５０２が所有する秘密鍵ｄB1、ｄB2を用いることなく、暗号文を復号することができる。
【０３１８】
なお、上述したように、第二実施形態では、通信暗号文５１１２生成のパラメータ（鍵）として、公開鍵ＱB1を変換することで得られたデータではなく、公開鍵ＱB1、公開鍵ＱB2、公開鍵ＱE1、公開鍵ＱE2を各々変換することで得られたデータに基づいて生成されたデータを用いている。
【０３１９】
したがって、公開鍵ＱB1、ＱB2と対のｄB1、ｄB2を所有する受信装置Ｂ５０２であっても、暗号文Ｃ５１３に付加されたデータ値ｆ1、ｆ2から、公開鍵ＱE1、ＱE2を変換することで得られたデータを求めなければ、通信暗号文５１１２生成のパラメータとして用いたデータを得ることができない。
【０３２０】
つまり、受信装置Ｂ５０２であっても、暗号文Ｃ５１３に、公開鍵ＱB1、公開鍵ＱB2、公開鍵ＱE1、公開鍵ＱE2を各々変換することで得られたデータ間において、いずれか２つの公開鍵を変換することで得られたデータが分かれば残りの２つ他方の公開鍵を変換することで得られたデータを求めることができる関係式を満たすデータ値ｆ1、ｆ2が付加されていなければ、暗号文を復号することができない。
【０３２１】
一方、当該データ値ｆ1、ｆ2が暗号文に付加されている場合は、第１、第２鍵管理装置５０３ａ、５０３ｂも、暗号文を必ず復号することができる。
【０３２２】
したがって、本発明の第二実施形態は、たとえば、国境を越えてやり取りが行われる暗号化された機密データなど、防衛上の理由などにより、当該データ取引者の意志にかかわらず、政府などが当該データを復号できるようにすることが要求される鍵回復システムに好適である。
【０３２３】
なお、上記の第二実施形態では、通信暗号文５１１２生成のパラメータとして、４つの公開鍵を各々変換することで得られたデータに基づいて、生成されたデータを用いているが、本発明はこれに限定されるものではない。２以上の公開鍵を各々変換することで得られたデータに基づいて、通信暗号文５１１２生成のパラメータを生成するものであればよい。
【０３２４】
ただし、受信装置および鍵管理装置において、暗号文に付加されたデータ値（前記パラメータ生成に用いた２以上の公開鍵を各々変換することで得られたデータにおいて、半分のデータが分かれば残りの半分のデータを求めることができる関係式を満たすデータ値）から、自己が所有する秘密鍵と対の公開鍵以外の公開鍵を変換することで得られたデータを求めることができるようにするために、受信装置および鍵管理装置が、互いに同数の秘密鍵を所有するようにする必要がある。
【０３２５】
また、本実施形態では、暗号文Ｃ５１３の最初データとして、整数倍演算部５６０８あるいは５１２３で生成した、楕円曲線上の点Ｒのｘ座標値、ｙ座標値の両方を含むものについて説明したが、第一実施形態と同様、ｘ座標値、ｙ座標値のいずれか一方のみを含むようにした場合でも、本発明の鍵回復システムを実現することができる。
【０３２６】
さらに、本実施形態では、楕円曲線暗号として、
ｙ2＝ｘ3＋ａｘ＋ｂ
に基づくものを用いたが、第一実施形態と同様、楕円曲線暗号として、
ｙ2＋ｘｙ＝ｘ3＋ａｘ＋ｂ
に基づくものを用いてもよい。
【０３２７】
【発明の効果】
以上説明したように、本発明によれば、自己が所有する秘密鍵を第三者に知らせる必要のない鍵回復を行うことができる。
【図面の簡単な説明】
【図１】本発明の第一実施形態が適用された鍵回復システムの概略構成図である。
【図２】図１に示す装置Ｓ１０１の機能構成図である。
【図３】図２に示すしきい値ロジック部２１２５の機能構成図である。
【図４】図２に示す圧縮・暗号化部２１２０、・・・の機能構成図である。
【図５】図１に示す装置Ａ１０２が自己が所有する秘密鍵ｄA１１０を用いて暗号文Ｃ１１３を復号する場合における、当該装置Ａ１０２の機能構成図である。
【図６】図５に示す復号・伸長化部２６１４、２６１７、・・・の機能構成図である。
【図７】図１に示す装置Ａ１０１が鍵ｄA１１０を紛失してしまった場合に、装置Ｂ１０３、Ｃ１０４の協力を得て、暗号文Ｃ１１３を復号する場合における、装置Ａ１０２、Ｂ１０３、Ｃ１０４の機能構成図である。
【図８】図１において、装置Ｂ１０３が装置Ｃ１０４の協力を得て、装置Ｓ１０１から送られてきた暗号文Ｃ１１３を復号化する場合における、装置Ｂ１０３、Ｃ１０４の機能構成図である。
【図９】図２に示すしきい値ロジック部の変形例の機能構成図である。
【図１０】図１に示すデータ暗号化装置として機能する装置Ｓの変形例の機能構成図である。
【図１１】図１に示すデータ復号化装置として機能する装置Ａの変形例であり、装置Ａが鍵ｄA１１０を紛失してしまった場合に、装置Ｂ、Ｃの協力を得て、図１０に示す装置Ｓが生成した暗号文Ｃ１１３ａを復号する場合の機能構成図である。
【図１２】本発明の第一実施形態の変形例が適用された鍵回復システムの概略構成図である。
【図１３】本発明の第二実施形態が適用された鍵回復システムの概略構成図である。
【図１４】図１３に示す送信装置Ａ５０１の機能構成図である。
【図１５】４０ビット鍵を用いて１ out of １の復号ロジックに対応した暗号化を行う暗号モジュール５００２の機能構成図である。
【図１６】２８ビット鍵を用いて２ out of ４の復号ロジックに対応した暗号化を行う暗号モジュール５００２の機能構成図である。
【図１７】図１６に示すしきい値ロジック部５１２５の機能構成を示す図である。
【図１８】図１３に示す受信装置Ｂ５０２の機能構成を示す図である。
【図１９】４０ビット鍵を用いて１ out of １の復号を行う復号モジュール５９０３機能構成図である。
【図２０】１２８ビット鍵を用いて２ out of ４の復号を行う復号モジュール５９０２の機能構成図である。
【図２１】第１、第２鍵管理装置５０３ａ、５０３ｂの機能構成図である。
【符号の説明】
１０１、１０２、１０３、１０４  情報処理装置
１０５、５０５  ネットワーク
１０６、５０６  メッセージ（通信文）Ｍ
１０７、１０８、１０９、５０７ａ、５０７ｂ、５０８ａ、５０８ｂ  公開鍵
１１０、１１１、１１２、５１０ａ、５１０ｂ、５１１ａ、５１１ｂ  秘密鍵
１１３、５１３  暗号文Ｃ
１９０７、１９１０、１９１４、１９１６  π-1関数処理部
１９１１、１９１７  伸長処理部
２１０２、５６０２、５１０２  ベースポイント生成部
２１１３、５６０７、５１１３  乱数生成部
２１１４、２１１５、２１１６、２１２３、２５０１、５６０８、５６０９、５１１４、５１１５、５１１６、５１２３、５１２４  整数倍演算部
２１１９、２１２１、２１２６、２１２７、２３２３、２６１５、２６２０、２６２０ａ、２６２３、５１１９、５１２６、５１２７、５１２８、５４２０、５４２３、５７２０、５７２３  ハッシュ値生成部
２１２０  圧縮・暗号化部
２１２５、２１２５ａ、５１２５  しきい値ロジック部
２２０８、２３２５、２４０８、２４１０、２６１９、２６１９ａ、２６２２、５２０８、５２１０、５４１９、５４２２、５６１９、５７１９、５７２２  演算部
１９０６、１９０９、２３１０、２３１７  拡張部
２３１２、２３１９  圧縮処理部
２３１５、２３１６、２３２２、２３２４  π関数処理部
２６１２、５４１２、５７１２  しきい値逆ロジック部
２６１４、２６１７  復号・伸長化部
５０１  装置Ａ
５０２  装置Ｂ
５０３ａ、５０３ｂ  鍵管理装置
５００１、５９０１  選択部
５００２、５００３  暗号モジュール
５１２０、５４１３、５７１３  鍵生成部
５１０８、５６１２、５６２２、５４１４、５７１４  共通鍵暗号部
５９０２、５９０３  復号モジュール
【図１】
0003667988.tif 000002
【図２】
0003667988.tif 000003
【図３】
0003667988.tif 000004
【図４】
0003667988.tif 000005
【図５】
0003667988.tif 000006
【図６】
0003667988.tif 000007
【図７】
0003667988.tif 000008
【図８】
0003667988.tif 000009
【図９】
0003667988.tif 000010
【図１０】
0003667988.tif 000011
【図１１】
0003667988.tif 000012
【図１２】
0003667988.tif 000013
【図１３】
0003667988.tif 000014
【図１４】
0003667988.tif 000015
【図１５】
0003667988.tif 000016
【図１６】
0003667988.tif 000017
【図１７】
0003667988.tif 000018
【図１８】
0003667988.tif 000019
【図１９】
0003667988.tif 000020
【図２０】
0003667988.tif 000021
【図２１】
0003667988.tif 000022