(57)【要約】【課題】  保持する秘密情報やプログラムのセキュリティ性を向上でき、且つ任意のプログラムを実行できるようにする。【解決手段】  圧縮プログラムＣのビット長と同じビット長の乱数ｒからなる分散情報Ｓが端末固有情報ＫP1により暗号化されてなる暗号化分散情報Ｅ（ＫP1，Ｓ）と、分散情報Ｓ及び圧縮プログラムＣの排他的論理和として算出された算出値Ｓ’が端末固有情報ＫP1により暗号化されてなる暗号化算出値Ｅ（ＫP1，Ｓ’）とを各サーバ装置Ｓｖ１，Ｓｖ２に秘密分散し、プログラム処理時に、端末装置１０がこれら暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）から圧縮プログラムＣを復元する。【選択図】  図１
2006099697.tif 000002
【特許請求の範囲】
【請求項１】
端末固有情報を有して共通鍵暗号方式、排他的論理和及び圧縮プログラム解凍を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、
前記各サーバ装置のうちの分散用サーバ装置が、０と１からなるバイナリ形式の前記プログラムに対し、前記０と１の偏りを少なくするように前記プログラムを圧縮し、圧縮プログラムを得る工程と、
前記分散用サーバ装置が当該圧縮プログラムのビット長を算出する工程と、
前記分散用サーバ装置が前記ビット長と同じビット長の乱数からなる分散情報を生成する工程と、
前記分散用サーバ装置が前記分散情報と前記圧縮プログラムとの各ビットの排他的論理和を算出し、算出値を得る工程と、
前記分散用サーバ装置が前記算出値を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値を得る工程と、
前記分散用サーバ装置が前記分散情報を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報を得る工程と、
前記分散用サーバ装置が前記暗号化分散情報及び暗号化算出値のうち、少なくとも一方を他のサーバ装置に送信する工程と
を備えたことを特徴とする情報プログラム保護方法。
【請求項２】
端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、
前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、
圧縮プログラムのビット長と同じビット長の乱数からなる分散情報が端末固有情報により暗号化されてなる暗号化分散情報が前記端末装置から入力される暗号化分散情報入力手段と、
前記分散情報と前記圧縮プログラムとの排他的論理和として算出された算出値が端末固有情報により暗号化されてなる暗号化算出値が前記端末装置から入力される暗号化算出値入力手段と、
前記入力された暗号化分散情報及び暗号化算出値から前記端末固有情報格納手段内の端末固有情報に基づいて、圧縮プログラムを復元するプログラム復元手段と、
前記復元された圧縮プログラムを前記端末装置内に出力する出力手段と、
鍵情報が格納される鍵情報格納手段と、
入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、
前記実行結果を前記端末装置内に出力する実行結果出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項３】
請求項２に記載の情報プログラム保護装置において、
前記プログラム復元手段は、
前記入力された暗号化分散情報を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、分散情報を得る分散情報復号手段と、
前記入力された暗号化算出値を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、算出値を得る算出値復号手段と、
前記復号された分散情報と前記復号された算出値との排他的論理和を算出し、圧縮プログラムを得る排他的論理和算出手段と、
を備えたことを特徴とする情報プログラム保護装置。
【請求項４】
請求項２に記載の情報プログラム保護装置において、
前記鍵格納手段は、鍵ＩＤが前記鍵情報に関連付けて格納されており、
前記処理要求は、処理ＩＤ、鍵ＩＤ及びデータを含んでおり、
前記処理実行手段は、
前記入力された処理要求に含まれる鍵ＩＤに基づいて、前記鍵情報格納部から鍵情報を読出す手段と、
前記読出した鍵情報、前記処理要求に含まれる処理ＩＤ及びデータに関し、前記処理ＩＤで指定された処理を鍵情報に基づいてデータに実行し、前記実行結果を得る手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項５】
請求項２に記載の情報プログラム保護装置において、
鍵情報のビット長と同じビット長の乱数からなる分散鍵情報が端末固有情報により暗号化されてなる暗号化分散鍵情報が前記端末装置から入力される暗号化分散鍵情報入力手段と、
前記分散鍵情報と当該鍵情報との排他的論理和として算出された鍵用算出値が端末固有情報により暗号化されてなる暗号化鍵用算出値が前記端末装置から入力される暗号化鍵用算出値入力手段と、
前記入力された暗号化分散鍵情報を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、分散鍵情報を得る分散鍵情報復号手段と、
前記入力された暗号化鍵用算出値を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、鍵用算出値を得る鍵用算出値復号手段と、
前記復号された分散鍵情報と前記復号された鍵用算出値との排他的論理和を算出し、鍵情報を復元する鍵情報復元手段と、
前記復元された鍵情報を対応する鍵ＩＤと関連付けて前記鍵情報格納手段に書込む鍵書込手段と、
当該鍵ＩＤを前記端末装置内に出力する鍵ＩＤ出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項６】
端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、
前記各サーバ装置のうちの分散用サーバ装置が乱数を生成する工程と、
前記分散用サーバ装置が前記乱数に基づいて分散鍵情報を生成する工程と、
前記分散用サーバ装置が前記分散鍵情報から前記端末固有情報に基づいて、個別化鍵情報を生成する工程と、
前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、
前記分散用サーバ装置が前記暗号化プログラム及び前記分散鍵情報のうち、少なくとも一方を他のサーバ装置に送信する工程と
を備えたことを特徴とする情報プログラム保護方法。
【請求項７】
端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、
前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、
乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムが前記端末装置から入力される暗号化プログラム入力手段と、
前記分散鍵情報が前記端末装置から入力される分散鍵情報入力手段と、
前記入力された分散鍵情報及び暗号化プログラムから前記端末固有情報格納手段内の端末固有情報に基づいて、プログラムを復元するプログラム復元手段と、
前記復元されたプログラムを前記端末装置内に出力する出力手段と、
鍵情報が格納される鍵情報格納手段と、
入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、
前記実行結果を前記端末装置内に出力する実行結果出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項８】
請求項７に記載の情報プログラム保護装置において、
前記プログラム復元手段は、
前記入力された分散鍵情報から前記端末固有情報格納手段内の端末固有情報に基づいて、個別化鍵情報を生成する個別化鍵情報生成手段と、
前記入力された暗号化プログラムを前記個別化鍵情報に基づいて復号し、プログラムを得るプログラム復号手段と、
を備えたことを特徴とする情報プログラム保護装置。
【請求項９】
請求項７に記載の情報プログラム保護装置において、
前記鍵格納手段は、鍵ＩＤが前記鍵情報に関連付けて格納されており、
前記処理要求は、処理ＩＤ、鍵ＩＤ及びデータを含んでおり、
前記処理実行手段は、
前記入力された処理要求に含まれる鍵ＩＤに基づいて、前記鍵情報格納部から鍵情報を読出す手段と、
前記読出した鍵情報、前記処理要求に含まれる処理ＩＤ及びデータに関し、前記処理ＩＤで指定された処理を鍵情報に基づいてデータに実行し、前記実行結果を得る手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項１０】
請求項７に記載の情報プログラム保護装置において、
乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいて鍵情報が暗号化されてなる暗号化鍵情報が前記端末装置から入力される暗号化鍵情報入力手段と、
前記分散鍵情報が前記端末装置から入力される分散鍵情報入力手段と、
前記入力された分散鍵情報から前記端末固有情報格納手段内の端末固有情報に基づいて、個別化鍵情報を生成する個別化鍵情報生成手段と、
前記入力された暗号化鍵情報を前記個別化鍵情報に基づいて復号し、鍵情報を復元する鍵情報復元手段と、
前記復元された鍵情報を対応する鍵ＩＤと関連付けて前記鍵情報格納手段に書込む鍵書込手段と、
当該鍵ＩＤを前記端末装置内に出力する鍵ＩＤ出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項１１】
端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムの秘密分散に用いる乱数及び当該プログラムを少なくともｎ台のサーバ装置に秘密分散する情報プログラム保護方法であって、
前記各サーバ装置のうちの分散用サーバ装置が乱数ｒを生成する工程と、
前記分散用サーバ装置が前記乱数及び端末固有情報に基づいて、個別化鍵情報を生成する工程と、
前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、
前記分散用サーバ装置が、前記乱数ｒを復元可能なｎ台以下のサーバ装置のグループの中で、一台でも欠けると乱数ｒが復元不可能となるグループである極小グループに基づいて、任意の（Ｌ＋１）台のサーバ装置のグループでは乱数ｒを復元可能となる旨の最小の台数Ｌを定める工程と、
Ｌ台以下のサーバ装置からなり、前記Ｌ台以下のサーバ装置により乱数ｒを復元可能で且つ１台でもサーバ装置が減ると、乱数ｒが復元不可能となる旨のｄ個の極小グループＡｉ（但し、１≦ｉ≦ｄ）を前記分散用サーバ装置に設定する工程と、
任意の（Ｌ＋１）台のサーバ装置のグループの中の極小グループに含まれるサーバ装置の集合をＡ０とし、集合Ａ０に含まれるサーバ装置の台数ｎ’を求め、（Ｌ＋１，ｎ’）しきい値法により、乱数ｒに対する第１分散情報Ｓ０＝｛ｓ１，…，ｓｎ’｝を生成する工程と、
前記集合Ａ０に含まれるサーバ装置に対し、前記第１分散情報Ｓ０に含まれる要素｛ｓ１，…，ｓｎ’｝を重複なく割り当てる工程と、
前記分散用サーバ装置が、前記極小グループＡｉ毎に（｜Ａｉ｜，｜Ａｉ｜）しきい値法により（但し｜Ａｉ｜はＡｉに属するサーバ装置の台数）、前記乱数ｒの第２分散情報Ｓｉ＝｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を生成する工程と、
前記分散用サーバ装置が、前記極小グループＡｉ毎に、前記第２分散情報Ｓｉに含まれる要素｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を当該極小グループＡｉに含まれる各サーバ装置に個別に割り当てる工程と
を備えたことを特徴とする情報プログラム保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報プログラム保護方法及び装置に関する。
【背景技術】
【０００２】
従来、ＰＣ（Personal computer）などのオープンアーキテクチャの機器においては、利用者固有の暗号鍵などの秘密情報及び／又はその秘密情報を扱うプログラム自体を保護したい場合がある。この場合、例えば耐タンパーソフトウェア技術を用いた情報プログラム保護方法や、ＩＣカード等の耐タンパー性の高いハードウェアに秘密情報やプログラムを格納してハードウェア内でプログラムを実行する情報プログラム保護方法などが適用可能となっている。
【０００３】
ここで、前者の情報プログラム保護方法は、耐タンパー性ソフトウェアを用い、保持する秘密情報やプログラムのセキュリティ性の向上を図るものである。しかしながら、この方法は、耐タンパー性ソフトウェアの耐タンパー性が低いことから、耐タンパー性ソフトウェアが解析されると、保持する秘密情報が漏洩しシステム全体に多大な影響を及ぼす恐れがある。
【０００４】
一方、後者の情報プログラム保護方法は、耐タンパー性ハードウェアを用い、保持する秘密情報やプログラムのセキュリティ性の向上を図るものである。しかしながら、この方法は、ハードウェアの耐タンパー性が高いことからセキュリティ性は高いものの、耐タンパー性ハードウェアの処理能力に制限があるため、実行可能なプログラムが耐タンパー性ハードウェアの処理能力以下に制限されてしまう。
【０００５】
なお、この出願に関係する先行技術文献としては、秘密情報を分散して管理するための秘密分散法がある（非特許文献１，２参照。）。しかしながら、秘密分散法は分散情報の個数を増大させ易い不都合がある。
【非特許文献１】A. Shamir, “How to share a secret”, Communications of the ACM, 22, 11, pp. 612 - 613, 1979.
【非特許文献２】J. Benaloh, J. Leichter, “Generalized secret sharing and monotone functions”, Proceedings of CRYPTO ’88, pp. 27 - 35, 1988.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上説明したように、従来の情報プログラム保護方法は、耐タンパーソフトウェア技術を用いる場合、耐タンパーソフトウェアの解析により、保持する秘密情報を漏洩させる恐れがあるので、セキュリティ性の向上が望まれるものとなっている。
【０００７】
一方、耐タンパー性の高いハードウェア内でプログラムを実行する場合、耐タンパー性ハードウェアの処理能力に制限があるため、実行可能なプログラムが制限される。  
また、秘密分散法は分散情報の個数を増大させ易い不都合がある。
【０００８】
本発明は上記実情を考慮してなされたもので、保持する秘密情報やプログラムのセキュリティ性を向上でき、且つ任意のプログラムを実行し得る情報プログラム保護方法及び装置を提供することを目的とする。
【０００９】
また、本発明の他の目的は、秘密分散法を用いた際に、分散情報の個数を抑制し得る情報プログラム保護方法を提供することにある。
【課題を解決するための手段】
【００１０】
第１の発明は、端末固有情報を有して共通鍵暗号方式、排他的論理和及び圧縮プログラム解凍を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、前記各サーバ装置のうちの分散用サーバ装置が、０と１からなるバイナリ形式の前記プログラムに対し、前記０と１の偏りを少なくするように前記プログラムを圧縮し、圧縮プログラムを得る工程と、前記分散用サーバ装置が当該圧縮プログラムのビット長を算出する工程と、前記分散用サーバ装置が前記ビット長と同じビット長の乱数からなる分散情報を生成する工程と、前記分散用サーバ装置が前記分散情報と前記圧縮プログラムとの各ビットの排他的論理和を算出し、算出値を得る工程と、前記分散用サーバ装置が前記算出値を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値を得る工程と、前記分散用サーバ装置が前記分散情報を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報を得る工程と、前記分散用サーバ装置が前記暗号化分散情報及び暗号化算出値のうち、少なくとも一方を他のサーバ装置に送信する工程とを備えた情報プログラム保護方法である。
【００１１】
第２の発明は、端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、圧縮プログラムのビット長と同じビット長の乱数からなる分散情報が端末固有情報により暗号化されてなる暗号化分散情報が前記端末装置から入力される暗号化分散情報入力手段と、前記分散情報と前記圧縮プログラムとの排他的論理和として算出された算出値が端末固有情報により暗号化されてなる暗号化算出値が前記端末装置から入力される暗号化算出値入力手段と、前記入力された暗号化分散情報及び暗号化算出値から前記端末固有情報格納手段内の端末固有情報に基づいて、圧縮プログラムを復元するプログラム復元手段と、前記復元された圧縮プログラムを前記端末装置内に出力する出力手段と、鍵情報が格納される鍵情報格納手段と、入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、前記実行結果を前記端末装置内に出力する実行結果出力手段とを備えた情報プログラム保護装置である。
【００１２】
第３の発明は、端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、前記各サーバ装置のうちの分散用サーバ装置が乱数を生成する工程と、前記分散用サーバ装置が前記乱数に基づいて分散鍵情報を生成する工程と、前記分散用サーバ装置が前記分散鍵情報から前記端末固有情報に基づいて、個別化鍵情報を生成する工程と、前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、前記分散用サーバ装置が前記暗号化プログラム及び前記分散鍵情報のうち、少なくとも一方を他のサーバ装置に送信する工程とを備えた情報プログラム保護方法である。
【００１３】
第４の発明は、端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムが前記端末装置から入力される暗号化プログラム入力手段と、前記分散鍵情報が前記端末装置から入力される分散鍵情報入力手段と、前記入力された分散鍵情報及び暗号化プログラムから前記端末固有情報格納手段内の端末固有情報に基づいて、プログラムを復元するプログラム復元手段と、前記復元されたプログラムを前記端末装置内に出力する出力手段と、鍵情報が格納される鍵情報格納手段と、入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、前記実行結果を前記端末装置内に出力する実行結果出力手段とを備えた情報プログラム保護装置である。
【００１４】
第５の発明は、端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムの秘密分散に用いる乱数及び当該プログラムを少なくともｎ台のサーバ装置に秘密分散する情報プログラム保護方法であって、前記各サーバ装置のうちの分散用サーバ装置が乱数を生成する工程と、前記分散用サーバ装置が前記乱数及び端末固有情報に基づいて、個別化鍵情報を生成する工程と、前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、前記分散用サーバ装置が、前記乱数ｒを復元可能なｎ台以下のサーバ装置のグループの中で、一台でも欠けると乱数ｒが復元不可能となるグループである極小グループに基づいて、任意の（Ｌ＋１）台のサーバ装置のグループでは乱数ｒを復元可能となる旨の最小の台数Ｌを定める工程と、Ｌ台以下のサーバ装置からなり、前記Ｌ台以下のサーバ装置により乱数ｒを復元可能で且つ１台でもサーバ装置が減ると、乱数ｒが復元不可能となる旨のｄ個の極小グループＡｉ（但し、１≦ｉ≦ｄ）を前記分散用サーバ装置に設定する工程と、任意の（Ｌ＋１）台のサーバ装置のグループの中の極小グループに含まれるサーバ装置の集合をＡ０とし、集合Ａ０に含まれるサーバ装置の台数ｎ’を求め、（Ｌ＋１，ｎ’）しきい値法により、乱数ｒに対する第１分散情報Ｓ０＝｛ｓ１，…，ｓｎ’｝を生成する工程と、前記集合Ａ０に含まれるサーバ装置に対し、前記第１分散情報Ｓ０に含まれる要素｛ｓ１，…，ｓｎ’｝を重複なく割り当てる工程と、前記分散用サーバ装置が、前記極小グループＡｉ毎に（｜Ａｉ｜，｜Ａｉ｜）しきい値法により（但し｜Ａｉ｜はＡｉに属するサーバ装置の台数）、前記乱数ｒの第２分散情報Ｓｉ＝｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を生成する工程と、前記分散用サーバ装置が、前記極小グループＡｉ毎に、前記第２分散情報Ｓｉに含まれる要素｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を当該極小グループＡｉに含まれる各サーバ装置に個別に割り当てる工程とを備えた情報プログラム保護方法である。
【００１５】
（作用）
第１及び第２の発明は、圧縮プログラムのビット長と同じビット長の乱数からなる分散情報が端末固有情報により暗号化されてなる暗号化分散情報と、分散情報及び圧縮プログラムの排他的論理和として算出された算出値が端末固有情報により暗号化されてなる暗号化算出値とを各サーバ装置に秘密分散し、プログラム処理時に、端末装置内の情報プログラム保護装置がこれら暗号化分散情報及び暗号化算出値から圧縮プログラムを復元するので、情報プログラム保護装置が保持する秘密情報（鍵情報）やプログラムのセキュリティ性を向上することができる。また、情報プログラム保護装置は、復元した圧縮プログラムを実行せずに端末装置内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、排他的論理和を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【００１６】
第３及び第４の発明は、乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムと、分散鍵情報とを各サーバ装置に秘密分散し、プログラム処理時に、端末装置内の情報プログラム保護装置がこれら暗号化プログラム及び分散鍵情報からプログラムを復元するので、情報プログラム保護装置が保持する秘密情報（鍵情報）やプログラムのセキュリティ性を向上することができる。また、情報プログラム保護装置は、復元したプログラムを実行せずに端末装置内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、暗号化プログラム及び分散鍵情報を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【００１７】
第５の発明は、乱数及び端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムと、乱数を秘密分散した第１及び第２分散情報とを各サーバ装置に秘密分散し、プログラム処理時に、端末装置内の情報プログラム保護装置がこれら暗号化プログラム及び各分散情報からプログラムを復元するので、情報プログラム保護装置が保持する秘密情報（鍵情報）やプログラムのセキュリティ性を向上することができる。また、情報プログラム保護装置は、復元したプログラムを実行せずに端末装置内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、秘密分散法を用いる際に、（Ｌ＋１，ｎ’）しきい値法と（｜Ａｉ｜，｜Ａｉ｜）しきい値法を用いたので、（｜Ａｉ｜，｜Ａｉ｜）しきい値法のみを用いる場合に比べ、分散情報の個数を抑制することができる（図１３及び図１４参照）。
【発明の効果】
【００１８】
以上説明したように本発明によれば、保持する秘密情報やプログラムのセキュリティ性を向上でき、且つ任意のプログラムを実行できる。また、秘密分散法を用いた際に、分散情報の個数を抑制できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の各実施形態について図面を参照しながら説明する。  
（第１の実施形態）
図１は本発明の第１の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。このシステムは、分散用サーバ装置Ｓｖ０、第１サーバ装置ＳＶ１、第２サーバ装置Ｓｖ２及び端末装置１０を備えている。
【００２０】
ここで、３台のサーバ装置Ｓｖ０〜Ｓｖ２は、説明の便宜上３台としたが、３台に限らず、１台のサーバ装置として実現しても良く、また任意の２台を一体化した１台のサーバ装置と残りの１台のサーバ装置とからなる２台のサーバ装置として実現しても良い。このことは以下の各実施形態でも同様である。
【００２１】
分散用サーバ装置Ｓｖ０は、保護対象記憶部１、端末固有情報記憶部２、入力部３、圧縮部４、分散情報生成部５、秘密分散部６、個別化部７及び送信部８を備えている。
【００２２】
保護対象記憶部１は、端末装置１０に利用される鍵情報及び／又はプログラム等といった保護対象が記憶されるメモリであり、入力部３により書込可能で、圧縮部４により読出可能となっている。
【００２３】
端末固有情報記憶部２は、端末装置１０固有の情報として、鍵やＩＤなどの端末固有情報ＫP1が記憶されるメモリであり、個別化部７により読出可能となっている。
【００２４】
入力部３は、端末装置１０に利用される鍵情報及び／又はプログラム等といった保護対象を保護対象記憶部１に書込むための入力デバイスである。
【００２５】
圧縮部４は、保護対象記憶部１に記憶されて０と１からなるバイナリ形式のプログラムに対し、０と１の偏りを少なくするようにプログラムを圧縮し、圧縮プログラムＣを得るものである。
【００２６】
分散情報生成部５は、圧縮部４により得られた圧縮プログラムＣのビット長を算出する機能と、得られたビット長と同じビット長の乱数ｒからなる分散情報Ｓを生成するものである。
【００２７】
秘密分散部６は、分散情報生成部５により得られた分散情報Ｓと圧縮プログラムＣとの各ビットの排他的論理和を算出し、算出値Ｓ’を得るものである。
【００２８】
個別化部７は、秘密分散部６により得られた算出値Ｓ’を端末固有情報記憶部２内の端末固有情報ＫP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値Ｅ（ＫP1，Ｓ’）を得る機能と、分散情報生成部５により得られた分散情報Ｓを端末固有情報記憶部２内の端末固有情報ＫP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報Ｅ（ＫP1，Ｓ）を得る機能とをもっている。
【００２９】
送信部８は、個別化部７により得られた暗号化分散情報Ｅ（ＫP1，Ｓ）を第１サーバ装置Ｓｖ１に送信する機能と、個別化部７により得られた暗号化算出値Ｅ（ＫP1，Ｓ’）を第２サーバ装置Ｓｖ２に送信する機能とをもっている。
【００３０】
第１サーバ装置Ｓｖ１は、分散用サーバ装置Ｓｖ０から受けた暗号化分散情報Ｅ（ＫP1，Ｓ）をメモリに記憶する機能と、端末装置１０からの要求に基づいて、メモリ内の暗号化分散情報Ｅ（ＫP1，Ｓ）を端末装置１０に送信する機能とをもっている。
【００３１】
第２サーバ装置Ｓｖ２は、分散用サーバ装置Ｓｖ０から受けた暗号化算出値Ｅ（ＫP1，Ｓ’）をメモリに記憶する機能と、端末装置１０からの要求に基づいて、メモリ内の暗号化算出値Ｅ（ＫP1，Ｓ’）を端末装置１０に送信する機能とをもっている。
【００３２】
端末装置１０は、端末固有情報ＫP1を有して共通鍵暗号方式及び排他的論理和を実行可能なセキュアチップ装置（図示せず）を備えた計算機である。
【００３３】
ここで、端末装置１０内のセキュアチップ装置は、例えばシングルチップ形式の耐タンパー性ハードウェアからなり、入力された暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をそれぞれ端末固有情報ＫP1及び共通鍵暗号方式に基づいた復号処理により復号し、分散情報Ｓ及び算出値Ｓ’を得る機能と、得られた分散情報Ｓ及び算出値Ｓ’の排他的論理和Ｓ ＸＯＲ Ｓ’を算出して圧縮プログラムＣを復元する機能とをもっている。
【００３４】
また、端末装置１０は、第１サーバ装置Ｓｖ１に暗号化分散情報Ｅ（ＫP1，Ｓ）を要求する機能と、第２サーバ装置Ｓｖ２に暗号化算出値Ｅ（ＫP1，Ｓ’）を要求する機能と、各サーバＳｖ１，Ｓｖ２から受けた暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をセキュアチップ装置に入力する機能と、セキュアチップ装置により得られた圧縮プログラムＣを解凍してプログラムを復元する機能と、プログラムを実行して実行終了後に当該プログラムを削除する機能とをもっている。
【００３５】
次に、以上のように構成された秘密分散システムの動作を図２のフローチャートを用いて説明する。  
分散用サーバ装置Ｓｖ０では、入力部３が、鍵情報及び／又はプログラム等といった保護対象を保護対象記憶部１に書込む。しかる後、圧縮部４は、保護対象記憶部１に記憶されて０と１からなるバイナリ形式のプログラムに対し、０と１の偏りを少なくするようにデータ圧縮手法によりプログラムを圧縮し（ＳＴ１）、圧縮プログラムＣを得る。データ圧縮手法には、Ｚｉｐ形式やＬＺＨ形式等の標準的なデータ圧縮アルゴリズムが使用可能である。
【００３６】
分散情報生成部５は、この圧縮プログラムＣのビット長を算出し、得られたビット長と同じビット長の乱数ｒからなる分散情報Ｓを生成する（ＳＴ２）。例えば、圧縮プログラムのビット長がｎビットであり、圧縮プログラムの各ビットをｃｉとすると、圧縮プログラムＣは、Ｃ＝（ｃ１，ｃ２，…，ｃｎ）  １≦ｉ≦ｎと表される。このとき、圧縮プログラムＣと同じビット長の乱数ｒからなる分散情報Ｓは、Ｓ＝（ｓ１，ｓ２，…，ｓｎ）  １≦ｉ≦ｎと生成される。
【００３７】
秘密分散部６は、この分散情報Ｓと圧縮プログラムＣとの各ビットの排他的論理和を算出し、算出値Ｓ’を得る。例えば、排他的論理和の算出値Ｓ’は、Ｓ’＝（ｓ’１，ｓ’２，…，ｓ’ｎ）  １≦ｉ≦ｎ  と表される。但し、ｓ’ｉ＝ｃｉ ＸＯＲ ｓｉ  １≦ｉ≦ｎである。これにより、圧縮プログラムＣは秘密分散される（ＳＴ３）。
【００３８】
個別化部７は、この算出値Ｓ’を端末固有情報記憶部２内の端末固有情報ＫP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値Ｅ（ＫP1，Ｓ’）を得る。同様に、個別化部７は、分散情報生成部５により得られた分散情報Ｓを端末固有情報記憶部２内の端末固有情報ＫP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報Ｅ（ＫP1，Ｓ）を得る。このように、秘密分散された圧縮プログラムＣは、端末固有情報ＫP1に基づいて、暗号化分散情報Ｅ（ＫP1，Ｓ）と暗号化算出値Ｅ（ＫP1，Ｓ’）に個別化される（ＳＴ４）。この個別化により、端末固有情報ＫP1が無い場合には元のプログラムを正しく復元することができない。また秘密分散により、端末固有情報ＫP1があったとしても、暗号化分散情報Ｅ（ＫP1，Ｓ）と暗号化算出値Ｅ（ＫP1，Ｓ’）との一方だけからでは元のプログラムを復元できない。
【００３９】
送信部８は、暗号化分散情報Ｅ（ＫP1，Ｓ）を第１サーバ装置Ｓｖ１に送信する一方、暗号化算出値Ｅ（ＫP1，Ｓ’）を第２サーバ装置Ｓｖ２に送信する。
【００４０】
第１サーバ装置Ｓｖ１は、暗号化分散情報Ｅ（ＫP1，Ｓ）をメモリに記憶する。第２サーバ装置Ｓｖ２は、暗号化算出値Ｅ（ＫP1，Ｓ’）をメモリに記憶する。これにより、プログラムの秘密分散が完了する。
【００４１】
続いて、端末装置１０が秘密分散されたプログラムを復元する動作について述べる。
【００４２】
端末装置１０は、図示しないユーザの操作等により、第１サーバ装置Ｓｖ１に暗号化分散情報Ｅ（ＫP1，Ｓ）を要求すると共に、第２サーバ装置Ｓｖ２に暗号化算出値Ｅ（ＫP1，Ｓ’）を要求する。
【００４３】
第１サーバ装置Ｓｖ１は、この要求に基づいて、メモリ内の暗号化分散情報Ｅ（ＫP1，Ｓ）を端末装置１０に送信する。同様に、第２サーバ装置Ｓｖ２は、この要求に基づいて、メモリ内の暗号化算出値Ｅ（ＫP1，Ｓ’）を端末装置１０に送信する。
【００４４】
端末装置１０においては、図示しないセキュアチップ装置が、各サーバＳｖ１，Ｓｖ２から受けた暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をそれぞれ端末固有情報ＫP1及び共通鍵暗号方式に基づいた復号処理により復号し、分散情報Ｓ及び算出値Ｓ’を得る。
【００４５】
また、セキュアチップ装置は、得られた分散情報Ｓ及び算出値Ｓ’の排他的論理和Ｓ ＸＯＲ Ｓ’を算出して圧縮プログラムＣを復元し、端末装置１０内に出力する。
【００４６】
端末装置１０は、セキュアチップ装置により得られた圧縮プログラムＣを解凍してプログラムを復元する。しかる後、端末装置１０はプログラムを実行し、実行終了後、当該プログラムを削除する。
【００４７】
上述したように本実施形態によれば、圧縮プログラムＣのビット長と同じビット長の乱数ｒからなる分散情報Ｓが端末固有情報ＫP1により暗号化されてなる暗号化分散情報Ｅ（ＫP1，Ｓ）と、分散情報Ｓ及び圧縮プログラムＣの排他的論理和として算出された算出値Ｓ’が端末固有情報ＫP1により暗号化されてなる暗号化算出値Ｅ（ＫP1，Ｓ’）とを各サーバ装置Ｓｖ１，Ｓｖ２に秘密分散し、プログラム処理時に、端末装置１０がこれら暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）から圧縮プログラムＣを復元するようにしたので、端末装置１０内のセキュアチップ装置が保持する秘密情報（鍵情報）や、端末装置１０が実行するプログラムのセキュリティ性を向上させることができる。
【００４８】
具体的にはデータやプログラムを秘密分散や個別化処理することで、データやプログラムの配布時のセキュリティや端末の記憶装置に保存されているデータやプログラムのセキュリティの向上が可能となる。例えば、端末装置１０がプログラムを持たないので、プログラムを不正な利用又は解析から保護することができる。また、プログラムは、秘密分散され個別化された状態で外部のサーバ装置Ｓｖ１，Ｓｖ２に記憶されているので、不正な利用又は解析から保護されている。
【００４９】
また、セキュアチップ装置は、復元した圧縮プログラムを実行せずに端末装置１０内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、排他的論理和を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【００５０】
（第２の実施形態）
図３は本発明の第２の実施形態に係る情報プログラム保護装置が適用されるセキュアチップ装置を備えた端末装置及びその周辺構成を示す模式図であり、図１と同一部分には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。なお、以下の各実施形態も同様にして重複した説明を省略する。
【００５１】
すなわち、本実施形態は、第１の実施形態の具体例であり、端末装置１０の構成が具体的に述べられている。
【００５２】
ここで、端末装置１０は、プログラム実行部１１、メモリ１１ａ、通信部１２及びセキュアチップ装置１３を備えている。セキュアチップ装置１３は、具体的には、制御部１４、端末固有情報格納部１５、個別化解除部１６、分散プログラム復元部１７、鍵情報格納部１８及びセキュリティ処理部１９を備えている。
【００５３】
プログラム実行部１１は、プログラム（又は鍵情報）を入手するため、通信部１２を介して第１及び第２サーバ装置Ｓｖ１，Ｓｖ２にプログラム（又は鍵情報）を要求する機能と、セキュアチップ装置１３から受けた圧縮プログラムＣを解凍し、得られたプログラム（又は鍵ＩＤｋ）をメモリ１１ａに記憶させて実行する機能と、プログラムの実行終了後、メモリ１１ａ内のプログラムをメモリ１１ａから削除する機能とをもっている。
【００５４】
プログラム実行部１１は、プログラムの実行中、必要により、処理ＩＤｐ、鍵ＩＤｋ及びデータＤからなるセキュリティ処理要求をセキュアチップ装置１３に入力する機能と、セキュアチップ装置１３から受けたセキュリティ処理の実行結果Ｐ（Ｋ，Ｄ）を用い、現在実行中のプログラムの実行を継続する機能とをもっている。
【００５５】
メモリ１１ａは、プログラム実行部１１から読出／書込可能な記憶部であり、圧縮プログラムＣ、解凍後のプログラム、実行結果Ｐ（Ｋ，Ｄ）、鍵ＩＤｋなどが適宜記憶される。
【００５６】
通信部１２は、プログラム実行部１１から受けた要求を第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に送信する機能と、第１及び第２サーバ装置Ｓｖ１，Ｓｖ２から受けた暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をセキュアチップ装置１３に入力する機能とをもっている。なお、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）は、通信部１２からセキュアチップ装置１３に入力される場合に限らず、通信部１２からプログラム実行部１１を介してセキュアチップ装置１３に入力されるようにしてもよい。
【００５７】
セキュアチップ装置１３は、端末装置１０に内蔵されたシングルチップ形式の耐タンパー性ハードウェアからなり、通信部１２から暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）が入力されると、以下の各部１４〜１８により、復元された圧縮プログラムＣ又は鍵ＩＤｋをプログラム実行部１１に出力する機能と、プログラム実行部１１からセキュリティ処理要求（処理ＩＤｐ，鍵ＩＤｋ，データＤ）が入力されると、以下の各部１４，１８，１９により、セキュリティ処理の実行結果Ｐ（Ｋ，Ｄ）をプログラム実行部１１に出力する機能をもっている。
【００５８】
ここで、セキュリティ処理としては、鍵情報格納部１８内の鍵情報Ｋを用いる処理であり、例えば暗号化処理、復号処理、署名生成処理、認証子の生成処理、又は認証子の検証処理などが使用可能となっている。なお、データＤは、必ずしもセキュリティ処理要求に含まれる必要は無く、例えばセキュリティ処理部１９等が乱数（又は時刻データ）等の数値データを生成してデータＤとする場合にはセキュリティ処理要求から省略してもよい。
【００５９】
制御部１４は、入力内容に応じ、復元された圧縮プログラムＣ、鍵ＩＤｋ、又は実行結果Ｐ（Ｋ，Ｄ）を得るように、各部１５〜１９を制御する機能と、得られた結果をプログラム実行部１１に出力する機能とをもっている
端末固有情報格納部１５は、端末固有情報ＫP1が記憶される耐タンパーメモリであり、制御部１４から読出／書込可能となっている。端末固有情報ＫP1は、個別化されたプログラム等の個別化を解除する際に利用される情報であり、各端末装置毎に固有の値（鍵又はＩＤ等）が用いられる。ここで、「個別化」の語は、「特定の端末装置でのみ復号可能な暗号化」を意味し、「個別化を解除」の語は「復号」を意味する。
【００６０】
個別化解除部１６は、制御部１４から端末固有情報ＫP1、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）が入力されると、端末固有情報ＫP1に基づいて、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をそれぞれ復号し（て個別化を解除し）、分散情報Ｓ及び算出値Ｓ’を復元する機能と、得られた分散情報Ｓ及び算出値Ｓ’を制御部１４に出力する機能とをもっている。
【００６１】
分散プログラム復元部１７は、制御部１４から入力された分散情報Ｓと算出値Ｓ’との排他的論理和を算出し、得られた算出結果Ｃ（又は鍵情報Ｋ，鍵ＩＤｋ）を制御部１４に出力する機能をもっている。
【００６２】
鍵情報格納部１８は、鍵情報Ｋ及び鍵ＩＤｋが互いに関連付けられて記憶される耐タンパーメモリであり、制御部１４から読出／書込可能となっている。
【００６３】
セキュリティ処理部１９は、制御部１４から鍵情報Ｋ、処理ＩＤｐ及びデータＤが入力されると、処理ＩＤｐで指定された処理Ｐを鍵情報Ｋに基づいてデータＤに実行する機能と、得られた実行結果Ｐ（Ｋ，Ｄ）を制御部１４に出力する機能とをもっている。
【００６４】
次に、以上のように構成された端末装置の動作を図４のフローチャートを用いて説明する。  
（プログラムの復元）
いま、第１の実施形態と同様に、圧縮プログラムＣを秘密分散及び個別化してなる暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）が、それぞれ第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に記憶されているとする。
【００６５】
一方、端末装置１０においては、図示しない外部操作等により、プログラムの実行がプログラム実行部１１に要求される。プログラム実行部１１は、実行するプログラムを入手するため、通信部１２を介して第１及び第２サーバ装置Ｓｖ１，Ｓｖ２にプログラムを要求する。
【００６６】
第１及び第２サーバ装置Ｓｖ１，Ｓｖ２は、それぞれ要求を受けると、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）を個別に端末装置１０に返信する。
【００６７】
通信部１２は、受信した暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をセキュアチップ装置１３に入力する。
【００６８】
セキュアチップ装置１３は、入力があると、入力内容を識別する（ＳＴ１１）。入力内容が個別化されたプログラムに相当する暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）の場合（ＳＴ１２）、制御部１４が端末固有情報格納部１５から端末固有情報ＫP1を読出す。
【００６９】
制御部１４は、この端末固有情報ＫP1及び入力された暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）を個別化解除部１６に入力する。
【００７０】
個別化解除部１６は、端末固有情報ＫP1に基づいて、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をそれぞれ復号し（て個別化を解除し）、分散情報Ｓ及び算出値Ｓ’を復元する（ＳＴ１３）。なお、分散情報Ｓと算出値Ｓ’との組は秘密分散プログラムＳ，Ｓ’と呼んでもよい。個別化解除部１６は、分散情報Ｓ及び算出値Ｓ’からなる秘密分散プログラムＳ，Ｓ’を制御部１４に出力する。
【００７１】
制御部１４は、この秘密分散プログラムＳ，Ｓ’を分散プログラム復元部１７に入力する。分散プログラム復元部１７は、秘密分散プログラムＳ，Ｓ’における分散情報Ｓと算出値Ｓ’との排他的論理和を算出し、算出結果Ｃを得る。この算出結果Ｃは圧縮プログラムＣに相当するので、圧縮プログラムＣが復元される（ＳＴ１４）。分散プログラム復元部１７は、圧縮プログラムＣを制御部１４に出力する。
【００７２】
制御部１４は、この圧縮プログラムＣをチップ１３外部のプログラム実行部１１に出力する（ＳＴ１５）。
【００７３】
プログラム実行部１１は、圧縮プログラムＣを解凍し、得られたプログラムをメモリ１１ａに記憶させて実行する。プログラムの実行終了後、プログラム実行部１１は、メモリ１１ａ内のプログラムをメモリ１１ａから削除し、処理を終了する。
【００７４】
（セキュリティ処理の実行）
いま、端末装置１０においては、例えばプログラム実行部１１によるプログラムの実行中、処理ＩＤで示されるセキュリティ処理の実行結果が必要になったとする。このとき、プログラム実行部１１は、処理ＩＤｐ、鍵ＩＤｋ及びデータＤからなるセキュリティ処理要求をセキュアチップ装置１３に入力する。
【００７５】
セキュアチップ装置１１においては、前述同様に入力内容が識別される（ＳＴ１１）。入力内容が処理ＩＤｐ、鍵ＩＤｋ及びデータＤからなるセキュリティ処理要求の場合（ＳＴ１６）、制御部１４は、入力された処理要求に含まれる鍵ＩＤｋに基づいて、鍵情報格納部１８から鍵情報Ｋを読出す。
【００７６】
制御部１４は、読出した鍵情報Ｋ、処理要求に含まれる処理ＩＤｐ及びデータＤをセキュリティ処理部１９に入力する（ＳＴ１７）。
【００７７】
セキュリティ処理部１９は、処理ＩＤｐで指定された処理を鍵情報Ｋに基づいてデータＤに実行し（ＳＴ１８）、実行結果Ｐ（Ｋ，Ｄ）を得る。なお、指定される処理としては、例えば、暗号化処理、復号処理、署名生成処理、認証子の生成処理、又は認証子の検証処理などが適用可能となっている。いずれにしても、セキュリティ処理部１９は、得られた実行結果Ｐ（Ｋ，Ｄ）を制御部１４に出力する。
【００７８】
制御部１４は、この実行結果Ｐ（Ｋ，Ｄ）をチップ１３外部のプログラム実行部１１に出力する（ＳＴ１９）。
【００７９】
プログラム実行部１１は、この実行結果Ｐ（Ｋ，Ｄ）を用い、現在実行中のプログラムの実行を継続する。なお、プログラムの実行終了後、プログラム実行部１１は、メモリ１１ａ内のプログラムをメモリ１１ａから削除し、処理を終了する。
【００８０】
（鍵情報の復元）
鍵情報Ｋの復元処理は、前述した圧縮プログラムＣに代えて、鍵情報Ｋが秘密分散され個別化された場合に当該鍵情報Ｋを復元する内容である。但し、鍵情報Ｋは必ずしも圧縮されている必要はない。以下、順次説明する。
【００８１】
いま、前述同様に、鍵情報Ｋを秘密分散及び個別化してなる暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）が、それぞれ第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に記憶されているとする。
【００８２】
一方、端末装置１０においては、図示しない外部操作等により、鍵情報Ｋの入手がプログラム実行部１１に要求される。プログラム実行部１１は、鍵情報Ｋを入手するため、通信部１２を介して第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に鍵情報Ｋを要求する。
【００８３】
第１及び第２サーバ装置Ｓｖ１，Ｓｖ２は、それぞれ要求を受けると、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）を個別に端末装置１０に返信する。
【００８４】
通信部１２は、受信した暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をセキュアチップ装置１３に入力する。
【００８５】
セキュアチップ装置１３は、入力があると、入力内容を識別する（ＳＴ１１）。入力内容が個別化された鍵情報Ｋに相当する暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）の場合（ＳＴ２０）、制御部１４が端末固有情報格納部１５から端末固有情報ＫP1を読出す。
【００８６】
制御部１４は、この端末固有情報ＫP1及び入力された暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）を個別化解除部１６に入力する。
【００８７】
個別化解除部１６は、端末固有情報ＫP1に基づいて、暗号化分散情報Ｅ（ＫP1，Ｓ）及び暗号化算出値Ｅ（ＫP1，Ｓ’）をそれぞれ復号し（て個別化を解除し）、分散情報Ｓ及び算出値Ｓ’を復元する（ＳＴ２１）。なお、分散情報Ｓと算出値Ｓ’との組は秘密分散鍵情報Ｓ，Ｓ’と呼んでもよい。個別化解除部１６は、分散情報Ｓ及び算出値Ｓ’からなる秘密分散鍵情報Ｓ，Ｓ’を制御部１４に出力する。
【００８８】
制御部１４は、この秘密分散鍵情報Ｓ，Ｓ’を分散プログラム復元部１７に入力する。分散プログラム復元部１７は、秘密分散鍵情報Ｓ，Ｓ’における分散情報Ｓと算出値Ｓ’との排他的論理和を算出し、算出結果Ｃを得る。この算出結果Ｃは鍵情報及び鍵ＩＤｋに相当するので、鍵情報Ｋ及び鍵ＩＤｋが復元される（ＳＴ２２）。分散プログラム復元部１７は、鍵情報Ｋ及び鍵ＩＤｋを制御部１４に出力する。
【００８９】
制御部１４は、この鍵情報Ｋ及び鍵ＩＤｋを互いに関連付けて鍵情報格納部１８に格納する。しかる後、制御部１４は、鍵ＩＤｋのみをチップ１３外部のプログラム実行部１１に出力する（ＳＴ２３）。
【００９０】
プログラム実行部１１は、鍵ＩＤｋをメモリ１１ａに記憶させ、適宜、前述したセキュリティ処理などに使用する。
【００９１】
上述したように本実施形態によれば、第１の実施形態の効果に加え、圧縮プログラムの場合と同様に、秘密分散され個別化された鍵情報を復元することができる。また、鍵情報を用いる任意のセキュリティ処理をセキュアチップ装置１３内で実行することができる。
【００９２】
なお、本実施形態は、鍵情報Ｋだけではなく、セキュアチップ装置１３内部で動作するプログラム自体も鍵情報格納部１８に格納し、格納したプログラムに基づきセキュリティ処理部１９を実行してもよい。この場合、さらに高いセキュリティ性を実現できる。
【００９３】
（第３の実施形態）
図３は本発明の第３の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【００９４】
本実施形態は、第１の実施形態の変形例であり、排他的論理和を用いた秘密分散に代えて、乱数ｒによる分散鍵情報Ｋ’を用いており、具体的には分散用サーバ装置Ｓｖ０が、図１に示した圧縮部４、分散情報生成部５、秘密分散部６及び個別化部７に代えて、乱数生成部２１、分散鍵情報生成部２２、個別化鍵生成部２３及び個別化部２４を備えている。これに伴い、送信部８、各サーバ装置Ｓｖ１，Ｓｖ２及び端末装置３０は、扱う対象データが異なるものとなっている。以下、順に説明する。
【００９５】
ここで、乱数生成部２１は、保護対象記憶部１内のプログラムＣを秘密分散する際に、予め乱数ｒを生成し、得られた乱数ｒを分散鍵情報生成部２２に送出する機能をもっている。なお、以下の各実施形態では排他的論理和を用いないので、保護対象記憶部１内のプログラムＣは圧縮プログラム又は解凍後のプログラムのいずれでもよい。
【００９６】
分散鍵情報生成部２２は、乱数生成部２１により生成された乱数ｒに基づいて分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）を生成する機能と、得られた分散鍵情報Ｋ’を個別化鍵部２３及び送信部８に送出する機能とをもっている。ここで、ｇは乗法群の原始元であり、ｐは大きな素数であって、予め分散鍵情報生成部２２に設定されている。
【００９７】
個別化鍵生成部２３は、分散鍵情報生成部２２から受けた分散鍵情報Ｋ’から端末固有情報記憶部２内の端末固有情報ＫP1に基づいて、個別化鍵情報Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）を生成する機能と、得られた個別化鍵情報Ｋを個別化部２４に送出する機能とをもっている。
【００９８】
個別化部２４は、個別化鍵生成部２３から受けた個別化鍵情報Ｋ及び共通鍵暗号方式に基づいた暗号処理により、保護対象記憶部１内のプログラムＣを暗号化する機能と、得られた暗号化プログラムＥ（Ｋ，Ｃ）を送信部８に送出する機能とをもっている。
【００９９】
送信部８は、分散鍵情報生成部２２により得られた分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）を第１サーバ装置Ｓｖ１に送信する機能と、個別化部２４により得られた暗号化プログラムＥ（Ｋ，Ｃ）を第２サーバ装置Ｓｖ２に送信する機能とをもっている。
【０１００】
第１サーバ装置Ｓｖ１は、分散用サーバ装置Ｓｖ０から受けた分散鍵情報Ｋ’をメモリに記憶する機能と、端末装置１０からの要求に基づいて、メモリ内の分散鍵情報Ｋ’を端末装置１０に送信する機能とをもっている。
【０１０１】
第２サーバ装置Ｓｖ２は、分散用サーバ装置Ｓｖ０から受けた暗号化プログラムＥ（Ｋ，Ｃ）をメモリに記憶する機能と、端末装置１０からの要求に基づいて、メモリ内の暗号化プログラムＥ（Ｋ，Ｃ）を端末装置１０に送信する機能とをもっている。
【０１０２】
端末装置３０は、端末固有情報ＫP1を有して共通鍵暗号方式を実行可能なセキュアチップ装置（図示せず）を内蔵した計算機である。
【０１０３】
ここで、端末装置３０内のセキュアチップ装置は、例えばシングルチップ形式の耐タンパー性ハードウェアからなり、入力された分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）から端末固有情報ＫP1及び共通鍵暗号方式に基づいた復号処理によりプログラムＣを復元する機能と、得られたプログラムＣを端末装置３０内に送出する機能とをもっている。
【０１０４】
また、端末装置３０は、第１サーバ装置Ｓｖ１に分散鍵情報Ｋ’を要求する機能と、第２サーバ装置Ｓｖ２に暗号化プログラムＥ（Ｋ，Ｃ）を要求する機能と、各サーバＳｖ１，Ｓｖ２から受けた分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置に入力する機能と、セキュアチップ装置により得られたプログラムＣを実行して実行終了後に当該プログラムを削除する機能とをもっている。
【０１０５】
次に、以上のように構成された秘密分散システムの動作を図６のフローチャートを用いて説明する。  
分散用サーバ装置Ｓｖ０では、入力部３が、鍵情報及び／又はプログラム等といった保護対象を保護対象記憶部１に書込む。このプログラムを秘密分散する際には、乱数生成部２１は、乱数ｒを生成し（ＳＴ３１）、得られた乱数ｒを分散鍵情報生成部２２に送出する。
【０１０６】
分散鍵情報生成部２２は、この乱数ｒに基づいて分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）を生成し（ＳＴ３２）、得られた分散鍵情報Ｋ’を個別化鍵部２３及び送信部８に送出する。
【０１０７】
個別化鍵生成部２３は、この分散鍵情報Ｋ’から端末固有情報記憶部２内の端末固有情報ＫP1に基づいて、個別化鍵情報Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）を生成し（ＳＴ３３）、得られた個別化鍵情報Ｋを個別化部２４に送出する。
【０１０８】
個別化部２４は、この個別化鍵情報Ｋ及び共通鍵暗号方式に基づいた暗号処理により、保護対象記憶部１内のプログラムＣを暗号化して個別化し（ＳＴ３４）、得られた暗号化プログラムＥ（Ｋ，Ｃ）を送信部８に送出する。なお、この個別化により、端末固有情報ＫP1が無い場合には元のプログラムを正しく復元することができない。また秘密分散により、端末固有情報ＫP1があったとしても、暗号化プログラムＥ（Ｋ，Ｃ）と分散鍵情報Ｋ’との一方だけからでは元のプログラムを復元できない。
【０１０９】
送信部８は、分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）を第１サーバ装置Ｓｖ１に送信する一方、暗号化プログラムＥ（Ｋ，Ｃ）を第２サーバ装置Ｓｖ２に送信する。
【０１１０】
第１サーバ装置Ｓｖ１は、分散鍵情報Ｋ’をメモリに記憶する。第２サーバ装置Ｓｖ２は、暗号化プログラムＥ（Ｋ，Ｃ）をメモリに記憶する。これにより、プログラムの秘密分散が完了する。
【０１１１】
続いて、端末装置３０が秘密分散されたプログラムを復元する動作について述べる。
【０１１２】
端末装置３０は、図示しないユーザの操作等により、第１サーバ装置Ｓｖ１に分散鍵情報Ｋ’を要求すると共に、第２サーバ装置Ｓｖ２に暗号化プログラムＥ（Ｋ，Ｃ）を要求する。
【０１１３】
第１サーバ装置Ｓｖ１は、この要求に基づいて、メモリ内の分散鍵情報Ｋ’を端末装置３０に送信する。同様に、第２サーバ装置Ｓｖ２は、この要求に基づいて、メモリ内の暗号化プログラムＥ（Ｋ，Ｃ）を端末装置３０に送信する。
【０１１４】
端末装置３０は、これら分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）を図示しないセキュアチップ装置に入力する。
【０１１５】
セキュアチップ装置は、分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）が入力されると、分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）及び端末固有情報ＫP1に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）を復元する。
【０１１６】
続いて、セキュアチップ装置は、得られた個別化鍵Ｋ及び共通鍵暗号方式に基づいた復号処理により暗号化プログラムＥ（Ｋ，Ｃ）からプログラムＣを復元し、得られたプログラムＣを端末装置３０内に送出する。
【０１１７】
端末装置３０は、セキュアチップ装置により得られたプログラムＣを実行し、実行終了後、当該プログラムＣを削除する。
【０１１８】
上述したように本実施形態によれば、乱数ｒにより生成された分散鍵情報Ｋ’から端末固有情報ＫP1に基づいて生成された個別化鍵情報Ｋに基づいてプログラムＣが暗号化されてなる暗号化プログラムＥ（Ｋ，Ｃ）と、分散鍵情報Ｋ’とを各サーバ装置Ｓｖ１，Ｓｖ２に秘密分散し、プログラム処理時に、端末装置３０内のセキュアチップ装置（情報プログラム保護装置）がこれら暗号化プログラムＥ（Ｋ，Ｃ）及び分散鍵情報Ｋ’からプログラムＣを復元するので、端末装置３０内のセキュアチップ装置が保持する秘密情報（鍵情報）やプログラムのセキュリティ性を向上することができる。
【０１１９】
また、第１の実施形態と同様に、セキュアチップ装置は、復元したプログラムを実行せずに端末装置３０内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、暗号化プログラム及び分散鍵情報を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【０１２０】
なお、本実施形態は、分散鍵情報Ｋ’に代えて乱数ｒを第１サーバ装置Ｓｖ１に記憶させ、端末固有情報をｇＫP1 ｍｏｄ ｐとして、個別化鍵ＫをＫ＝（ｇＫP1）ｒ ｍｏｄ ｐとして算出する構成に変形しても、同様の作用効果を得ることができる。
【０１２１】
（第４の実施形態）
図７は本発明の第４の実施形態に係る情報プログラム保護装置が適用されるセキュアチップ装置を備えた端末装置及びその周辺構成を示す模式図である。
【０１２２】
本実施形態は、第３の実施形態の具体例であり、端末装置３０の構成が具体的に述べられている。
【０１２３】
ここで、端末装置３０は、プログラム実行部１１、メモリ１１ａ、通信部３１及びセキュアチップ装置３２を備えている。セキュアチップ装置３２は、具体的には、制御部３３、端末固有情報格納部１５、個別化鍵復元処理部３４、個別化処理部３５、鍵情報格納部１８及びセキュリティ処理部１９を備えている。
【０１２４】
プログラム実行部１１は、プログラム（又は鍵情報）を入手するため、通信部３２を介して第１及び第２サーバ装置Ｓｖ１，Ｓｖ２にプログラム（又は鍵情報）を要求する機能と、セキュアチップ装置３２から受けたプログラム（又は鍵ＩＤｋ）をメモリ１１ａに記憶させて実行する機能と、プログラムの実行終了後、メモリ１１ａ内のプログラムをメモリ１１ａから削除する機能とをもっている。
【０１２５】
プログラム実行部１１は、前述した通り、プログラムの実行中、必要により、セキュリティ処理要求をセキュアチップ装置３２に入力する機能と、得られた実行結果Ｐ（Ｋ，Ｄ）を用い、現在実行中のプログラムの実行を継続する機能とをもっている。
【０１２６】
メモリ１１ａは、前述同様に、プログラム実行部１１から読出／書込可能な記憶部である。
【０１２７】
通信部３１は、プログラム実行部１１から受けた要求を第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に送信する機能と、第１及び第２サーバ装置Ｓｖ１，Ｓｖ２から受けた分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置３２に入力する機能とをもっている。なお、分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）は、前述同様に通信部３１からプログラム実行部１１を介してセキュアチップ装置３２に入力してもよい。
【０１２８】
セキュアチップ装置３２は、端末装置３０に内蔵されたシングルチップ形式の耐タンパー性ハードウェアからなり、通信部３２から分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）が入力されると、以下の各部３３〜３５，１５により、復元されたプログラムＣ又は鍵ＩＤｋをプログラム実行部１１に出力する機能と、プログラム実行部１１からセキュリティ処理要求（処理ＩＤｐ，鍵ＩＤｋ，データＤ）が入力されると、以下の各部３３，１８，１９により、セキュリティ処理の実行結果Ｐ（Ｋ，Ｄ）をプログラム実行部１１に出力する機能をもっている。
【０１２９】
ここで、セキュリティ処理は、前述した通り、例えば暗号化処理、復号処理、署名生成処理、認証子の生成処理、又は認証子の検証処理などが使用可能となっている。なお、データＤはセキュリティ処理要求から省略可能なことも前述した通りである。
【０１３０】
制御部３３は、入力内容に応じ、復元されたプログラムＣ、鍵ＩＤｋ、又は実行結果Ｐ（Ｋ，Ｄ）を得るように、各部３４〜３５，１５，１８〜１９を制御する機能と、得られた結果をプログラム実行部１１に出力する機能とをもっている。なお、端末固有情報格納部１５、鍵情報格納部１８及びセキュリティ処理部１９は、前述同様のものである。
【０１３１】
個別化鍵復元処理部３４は、制御部３３から入力された端末固有情報ＫP1及び分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）＝）を算出し、得られた個別化鍵情報Ｋを制御部３３に送出する機能をもっている。
【０１３２】
個別化処理部３５は、制御部３３から個別化鍵情報Ｋ及び暗号化プログラムＥ（Ｋ，Ｃ）が入力されると、個別化鍵情報Ｋに基づいて暗号化プログラムＥ（Ｋ，Ｃ）を復号し（て個別化を解除し）、プログラムＣを復元する機能と、得られたプログラムＣを制御部３３に出力する機能とをもっている。
【０１３３】
次に、以上のように構成された端末装置の動作を図４のフローチャートを用いて説明する。  
（プログラムの復元）
いま、第３の実施形態と同様に、プログラムＣを秘密分散及び個別化してなる分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）が、それぞれ第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に記憶されているとする。
【０１３４】
一方、端末装置３０においては、前述同様に、第１及び第２サーバ装置Ｓｖ１，Ｓｖ２にプログラムを要求し、各サーバ装置Ｓｖ１，Ｓｖ２から受けた分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置３２に入力する。
【０１３５】
セキュアチップ装置３２は、入力があると、入力内容を識別する（ＳＴ４１）。入力内容が個別化されたプログラムに相当する分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ’）の場合（ＳＴ４２）、制御部３３が端末固有情報格納部１５から端末固有情報ＫP1を読出す。
【０１３６】
制御部３３は、この端末固有情報ＫP1及び分散鍵情報Ｋ’を個別化鍵復元処理部３４に入力する。
【０１３７】
個別化鍵復元処理部３４は、この端末固有情報ＫP1及び分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）＝）を復元し（ＳＴ４３）、得られた個別化鍵情報Ｋを制御部３３に送出する。
【０１３８】
制御部３３は、この個別化鍵情報Ｋ及び暗号化プログラムＥ（Ｋ，Ｃ）を個別化処理部３５に入力する。
【０１３９】
個別化処理部３５は、この個別化鍵情報Ｋに基づいて暗号化プログラムＥ（Ｋ，Ｃ）を復号し（て個別化を解除し）、プログラムＣを復元する（ＳＴ４４）。また、個別化処理部３５は、得られたプログラムＣを制御部３３に出力する。
【０１４０】
制御部１４は、このプログラムＣをチップ３２外部のプログラム実行部１１に出力する（ＳＴ４５）。
【０１４１】
プログラム実行部１１は、得られたプログラムをメモリ１１ａに記憶させて実行する。プログラムの実行終了後、プログラム実行部１１は、メモリ１１ａ内のプログラムをメモリ１１ａから削除し、処理を終了する。
【０１４２】
（セキュリティ処理の実行）
セキュリティ処理は、第２の実施形態と同様に実行される。  
（鍵情報の復元）
鍵情報の復元処理は、前述したプログラムＣに代えて、鍵情報Ｋｃが秘密分散され個別化された場合に当該鍵情報Ｋｃを復元する内容である。以下、順次説明する。
【０１４３】
いま、前述同様に、鍵情報Ｋｃを秘密分散及び個別化してなる秘密分散及び個別化してなる分散鍵情報Ｋ’及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）が、それぞれ第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に記憶されているとする。
【０１４４】
一方、端末装置３０においては、図示しない外部操作等により、鍵情報Ｋｃの入手がプログラム実行部１１に要求される。プログラム実行部１１は、鍵情報Ｋｃを入手するため、通信部１２を介して第１及び第２サーバ装置Ｓｖ１，Ｓｖ２に鍵情報Ｋｃを要求し、各サーバ装置Ｓｖ１，Ｓｖ２から受けた分散鍵情報Ｋ’及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）をセキュアチップ装置３２に入力する。
【０１４５】
セキュアチップ装置３２は、入力があると、入力内容を識別する（ＳＴ４１）。入力内容が個別化された鍵情報Ｋｃに相当する分散鍵情報Ｋ’及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）の場合（ＳＴ４６）、制御部３３が端末固有情報格納部１５から端末固有情報ＫP1を読出す。
【０１４６】
制御部３３は、この端末固有情報ＫP1及び分散鍵情報Ｋ’を個別化鍵復元処理部３４に入力する。
【０１４７】
個別化鍵復元処理部３４は、この端末固有情報ＫP1及び分散鍵情報Ｋ’（＝ｇｒ ｍｏｄ ｐ）に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）＝）を復元し（ＳＴ４７）、得られた個別化鍵情報Ｋを制御部３３に送出する。
【０１４８】
制御部３３は、この個別化鍵情報Ｋ及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）を個別化処理部３５に入力する。
【０１４９】
個別化処理部３５は、この個別化鍵情報Ｋに基づいて暗号化鍵情報Ｅ（Ｋ，Ｋｃ）を復号し（て個別化を解除し）、鍵情報Ｋｃ及び鍵ＩＤｋを復元する（ＳＴ４８）。また、個別化処理部３５は、得られた鍵情報Ｋｃ及び鍵ＩＤｋを制御部３３に出力する。
【０１５０】
制御部３３は、この鍵情報Ｋ及び鍵ＩＤｋを互いに関連付けて鍵情報格納部１８に格納する。しかる後、制御部３３は、鍵ＩＤｋのみをチップ３２外部のプログラム実行部１１に出力する（ＳＴ４９）。
【０１５１】
プログラム実行部１１は、鍵ＩＤｋをメモリ１１ａに記憶させ、適宜、前述したセキュリティ処理などに使用する。
【０１５２】
上述したように本実施形態によれば、第３の実施形態の効果に加え、プログラムの場合と同様に、秘密分散され個別化された鍵情報を復元することができる。また、鍵情報を用いる任意のセキュリティ処理をセキュアチップ装置３２内で実行することができる。
【０１５３】
なお、本実施形態は、鍵情報Ｋだけではなく、セキュアチップ装置３２内部で動作するプログラム自体も鍵情報格納部１８に格納し、格納したプログラムに基づきセキュリティ処理部１９を実行してもよい。この場合、さらに高いセキュリティ性を実現できる。
【０１５４】
（第５の実施形態）
図９は本発明の第５の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【０１５５】
本実施形態は、第３の実施形態の変形例であり、乱数ｒによる秘密分散において、乱数ｒ自体を分散情報Ｓ０，Ｓ１〜Ｓ３として分散するものであり、概略的には分散用サーバ装置Ｓｖ０が、図５に示した分散鍵情報生成部２２を省略し、乱数ｒに関する分散情報生成部２５を備えている。これに伴い、他の要素が若干異なるものとなっている。また、８台のサーバ装置Ｓｖ１〜Ｓｖ８に秘密分散するものとなっている。以下、順に説明する。
【０１５６】
ここで、乱数生成部２１は、保護対象記憶部１内のプログラムＣを秘密分散する際に、予め乱数ｒを生成し、得られた乱数ｒを個別化鍵生成部２３及び分散情報生成部２５に送出する機能をもっている。
【０１５７】
個別化鍵生成部２３は、乱数生成部２１から受けた乱数ｒ及び端末固有情報記憶部２内の端末固有情報ＫP1に基づいて、個別化鍵情報Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）を生成する機能と、得られた個別化鍵情報Ｋを個別化部２４に送出する機能と、鍵生成用のパラメータｇを送信部８に送出する機能とをもっている。ここで、ｇは乗法群の原始元であり、ｐは大きな素数であって、予め個別化鍵生成部２３に設定されている。
【０１５８】
分散情報生成部２５は、乱数生成部２１から受けた乱数ｒを復元可能な第１分散情報Ｓ０及び第２分散情報Ｓ１〜Ｓ３を生成する機能と、得られた第１及び第２分散情報Ｓ０，Ｓ１〜Ｓ３を送信部８に送信する機能とをもっている。
【０１５９】
ここで、分散情報生成部２５は、具体的には次のような機能（ｆ１）〜（ｆ５）を有している。
【０１６０】
［ｆ１］ｎ台のサーバ装置Ｓｖ１，…，Ｓｖｎのうち、任意のｋ台のサーバ装置により分散情報を復元可能とするように（ｋ，ｎ）しきい値法により、乱数ｒの第１分散情報Ｓ０＝｛ｓ１，…，ｓｎ｝を生成する機能。なお、ｋは、後述する（Ｌ＋１）に対応する。ｎは、後述するｎ’に対応する。すなわち、（ｋ，ｎ）しきい値法は、後述する（Ｌ＋１，ｎ’）しきい値法に対応する。
【０１６１】
［ｆ２］第１分散情報Ｓ０に含まれる要素｛ｓ１，…，ｓｎ｝を各サーバ装置Ｓｖ１，…，Ｓｖｎに個別に割当てる機能。
【０１６２】
［ｆ３］ｋ台未満のサーバ装置からなり、ｋ台未満のサーバ装置により乱数ｒを復元可能で且つ１台でもサーバ装置が減ると、乱数ｒが復元不可能となる旨のｄ個の極小グループＡｉ（但し、１≦ｉ≦ｄ）が設定される機能。
【０１６３】
［ｆ４］極小グループＡｉ毎に（｜Ａｉ｜，｜Ａｉ｜）しきい値法により（但し｜Ａｉ｜はＡｉに属するサーバ装置の台数）、乱数ｒの第２分散情報Ｓｉ＝｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を生成する機能。
【０１６４】
［ｆ５］極小グループＡｉ毎に、第２分散情報Ｓｉに含まれる要素｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を当該極小グループＡｉに含まれる各サーバ装置に個別に割り当てる機能。
【０１６５】
送信部８は、分散情報生成部２５により得られた分散情報Ｓ０，Ｓ１〜Ｓ３の所定の組合せを第１〜第６サーバ装置Ｓｖ１〜Ｓｖ８に送信する機能と、個別化鍵生成部２４から受けた原始元ｇを第７サーバ装置Ｓｖ７に送信する機能と、個別化部２４により得られた暗号化プログラムＥ（Ｋ，Ｃ）を第８サーバ装置Ｓｖ８に送信する機能とをもっている。
【０１６６】
第１〜第６サーバ装置Ｓｖ１〜Ｓｖ６は、分散用サーバ装置Ｓｖ０から受けた分散情報Ｓ０，Ｓ１〜Ｓ３の組合せをメモリに記憶する機能と、端末装置４０からの要求に基づいて、メモリ内の分散情報Ｓ０，Ｓ１〜Ｓ３を端末装置４０に送信する機能とをもっている。
【０１６７】
第７サーバ装置Ｓｖ７は、分散用サーバ装置Ｓｖ０から受けた原始元ｇをメモリに記憶する機能と、端末装置４０からの要求に基づいて、メモリ内の原始元ｇを端末装置４０に送信する機能とをもっている。
【０１６８】
第８サーバ装置Ｓｖ８は、分散用サーバ装置Ｓｖ０から受けた暗号化プログラムＥ（Ｋ，Ｃ）をメモリに記憶する機能と、端末装置４０からの要求に基づいて、メモリ内の暗号化プログラムＥ（Ｋ，Ｃ）を端末装置４０に送信する機能とをもっている。
【０１６９】
端末装置４０は、端末固有情報ＫP1を有して共通鍵暗号方式を実行可能なセキュアチップ装置（図示せず）を内蔵した計算機である。
【０１７０】
ここで、端末装置４０内のセキュアチップ装置は、例えばシングルチップ形式の耐タンパー性ハードウェアからなり、入力された分散情報Ｓ０又はＳ１〜Ｓ３、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）から端末固有情報ＫP1及び共通鍵暗号方式に基づいた復号処理によりプログラムＣを復元する機能と、得られたプログラムＣを端末装置４０内に送出する機能とをもっている。
【０１７１】
また、端末装置４０は、第１〜第６サーバ装置Ｓｖ１〜Ｓｖ６に分散情報Ｓ０，Ｓ１〜Ｓ３を要求する機能と、第７サーバ装置Ｓｖ７に原始元ｇを要求する機能と、第８サーバ装置Ｓｖ８に暗号化プログラムＥ（Ｋ，Ｃ）を要求する機能と、各サーバ装置Ｓｖ１〜Ｓｖ８から受けた分散情報Ｓ０又はＳ１〜Ｓ３、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置に入力する機能と、セキュアチップ装置により得られたプログラムＣを実行して実行終了後に当該プログラムを削除する機能とをもっている。
【０１７２】
次に、以上のように構成された秘密分散システムの動作を図１０のフローチャートを用いて説明する。  
分散用サーバ装置Ｓｖ０では、プログラムＣを秘密分散する際に、乱数生成部２１が乱数ｒを生成し（ＳＴ３１）、得られた乱数ｒを個別化鍵生成部２３及び分散情報生成部２５に送出する。
【０１７３】
個別化鍵生成部２３は、この乱数ｒ及び端末固有情報記憶部２内の端末固有情報ＫP1に基づいて、個別化鍵情報Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）を生成し（ＳＴ３３）、得られた個別化鍵情報Ｋを個別化部２４に送出すると共に、原始元ｇを送信部８に送出する。
【０１７４】
個別化部２４は、この個別化鍵情報Ｋ及び共通鍵暗号方式に基づいた暗号処理により、保護対象記憶部１内のプログラムＣを暗号化して個別化し（ＳＴ３４）、得られた暗号化プログラムＥ（Ｋ，Ｃ）を送信部８に送出する。なお、この個別化により、端末固有情報ＫP1が無い場合には元のプログラムを正しく復元することができない。また秘密分散により、端末固有情報ＫP1があったとしても、暗号化プログラムＥ（Ｋ，Ｃ）と、分散情報Ｓ０，Ｓ１〜Ｓ３との一方だけからでは元のプログラムを復元できない。
【０１７５】
分散情報生成部２５は、乱数生成部２１から乱数ｒを受けると、乱数ｒを復元可能な第１分散情報Ｓ０及び第２分散情報Ｓ１〜Ｓ３の生成を開始する（ＳＴ３５）。
【０１７６】
ここで、乱数ｒの分散情報の生成に必要な秘密分散法について述べる。乱数ｒはいくつかの分散情報に秘密分散され、分散情報が各サーバ装置Ｓｖ１，…，Ｓｖｎに割り当てられる。このとき、本実施形態の秘密分散法は、次の（ａ）〜（ｃ）で表される。
【０１７７】
（ａ）任意の（Ｌ＋１）台のサーバ装置のグループは、乱数ｒを復元でき、また、Ｌ台以下のサーバ装置からなる極小グループＡ１，…，Ａｄも乱数ｒを復元できる。なお、極小グループは、乱数ｒを復元可能なグループの中で、グループのサーバ装置のうち、一台でも欠けると乱数ｒを復元できないグループである。また、上記台数Ｌは、全ての極小グループに基づいて、定めることができる。
【０１７８】
（ｂ）任意の（Ｌ＋１）台のサーバ装置のグループの中で極小グループになっているグループに含まれるサーバ装置の集合をＡ０とし、Ａ０に含まれるサーバ装置の台数をｎ’とする。このとき、（Ｌ＋１，ｎ’）しきい値法により、乱数ｒに対する第１分散情報Ｓ０＝｛ｓ１，…，ｓｎ’｝を求め、Ａ０に含まれるサーバ装置にＳ０に含まれる分散情報の一つを重複なく割り当てる。
【０１７９】
（ｃ）各極小グループＡｉ（１≦ｉ≦ｄ）に対し、（｜Ａｉ｜，｜Ａｉ｜）しきい値法により、乱数ｒに対する第２分散情報Ｓｉ＝｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を求め、Ａｉに含まれるサーバ装置にＳｉに含まれる分散情報の一つを重複なく割り当てる。
【０１８０】
本実施形態は、上記（ａ）〜（ｃ）で表される秘密分散方法を用いるため、各サーバ装置Ｓｖ１〜Ｓｖ６に割り当てられる分散情報の数を減らすことが可能であり、実装上非常に有効である。例えば各サーバ装置Ｓｖ１，…，Ｓｖ６に関し、乱数ｒを復元することが可能な８つの極小グループＵ１〜Ｕ８を図１１に示すように定めるとする。
【０１８１】
この場合、本実施形態の秘密分散方法では、Ｌ＝３，ｎ＝ｎ’＝６、ｄ＝３となり、極小グループＡ０，…，Ａ３は図１２に示すようになる。
【０１８２】
従って、この場合、各サーバ装置Ｓｖ１〜Ｓｖ６に割り当てられる分散情報の数は、図１３に示すように、Ｓｖ１：３個、Ｓｖ２：３個、Ｓｖ３：３個、Ｓｖ４：３個、Ｓｖ５：１個、Ｓｖ６：１個となる。
【０１８３】
一方、従来手法（例えば、非特許文献２参照）では、全ての極小グループＵ１〜Ｕ８に（ｃ）の処理を行う必要があるので、各サーバ装置Ｓｖ１〜Ｓｖ６に割り当てられる分散情報の数は、図１４に示すように、Ｓｖ１：４個、Ｓｖ２：４個、Ｓｖ３：５個、Ｓｖ４：５個、Ｓｖ５：５個、Ｓｖ６：５個となる。
【０１８４】
このように、従来手法は、本実施形態よりも多数の分散情報を必要とするので、非効率なことが分かる。
【０１８５】
ここで、分散情報生成部２５の動作説明に戻る。分散情報生成部２５は、ステップＳＴ３５の後、例えばユーザ等の外部操作により、図１１に示すように、各サーバ装置Ｓｖ１〜Ｓｖ６の極小グループＵ１〜Ｕ８が設定される（ＳＴ３６）。この極小グループＵ１〜Ｕ８は、上記（ｂ），（ｃ）及び図１２に示すように、極小グループＡ０〜Ａ３に分類される。
【０１８６】
続いて、分散情報生成部２５は、（Ｌ＋１，ｎ’）しきい値法により、乱数ｒに対する第１分散情報Ｓ０＝｛ｓ１，…，ｓｎ’｝を生成し（ＳＴ３７）、Ａ０に含まれるサーバ装置にＳ０に含まれる分散情報の一つを重複なく割り当てる。
【０１８７】
また、分散情報生成部２５は、各極小グループＡｉ（１≦ｉ≦ｄ）に対し、（｜Ａｉ｜，｜Ａｉ｜）しきい値法により、乱数ｒに対する第２分散情報Ｓｉ＝｛ｓ{i,1}，…，ｓ{i,｜Ai｜}｝を生成し（ＳＴ３８）、Ａｉに含まれるサーバ装置にＳｉに含まれる分散情報の一つを重複なく割り当てる。
【０１８８】
しかる後、分散情報生成部２５は、得られた第１及び第２分散情報Ｓ０，Ｓ１〜Ｓ３を送信部８に送信する。
【０１８９】
送信部８は、これら分散情報Ｓ０，Ｓ１〜Ｓ３の所定の組合せを第１〜第６サーバ装置Ｓｖ１〜Ｓｖ８に送信し、個別化鍵生成部２４から受けた原始元ｇを第７サーバ装置Ｓｖ７に送信し、個別化部２４により得られた暗号化プログラムＥ（Ｋ，Ｃ）を第８サーバ装置Ｓｖ８に送信する。
【０１９０】
第１〜第６サーバ装置Ｓｖ１〜Ｓｖ６は、それぞれ受信した分散情報Ｓ０，Ｓ１〜Ｓ３の組合せをメモリに記憶する。第７サーバ装置Ｓｖ７は、受信した原始元ｇをメモリに記憶する。第８サーバ装置Ｓｖ８は、受信した暗号化プログラムＥ（Ｋ，Ｃ）をメモリに記憶する。これにより、プログラムの秘密分散が完了する。
【０１９１】
続いて、端末装置４０が秘密分散されたプログラムを復元する動作について述べる。
【０１９２】
端末装置４０は、図示しないユーザの操作等により、例えば図１２に示すような極小グループＡ３に属する第２〜第４サーバ装置Ｓｖ２〜Ｓｖ４に対し、図１３に示すような第２分散情報Ｓ３を要求する。また、端末装置４０は、第７及び第８サーバ装置Ｓｖ７，Ｓｖ８にも情報を要求する。なお、極小グループＡ３に限らず、任意の極小グループＡ０〜Ａ２に分散情報を要求可能なことは言うまでもない。また、極小グループＡ０の場合、任意の４台のサーバ装置Ｓｖを選択すればよい。
【０１９３】
さて第２〜第４サーバ装置Ｓｖ２〜Ｓｖ４は、この要求に基づいて、それぞれメモリ内の分散情報Ｓ{3,1}，Ｓ{3,2}，Ｓ{3,3}を端末装置４０に送信する。第７サーバ装置Ｓｖ７は、この要求に基づいて、メモリ内の原始元ｇを端末装置４０に送信する。第８サーバ装置Ｓｖ８は、この要求に基づいて、メモリ内の暗号化プログラムＥ（Ｋ，Ｃ）を端末装置４０に送信する。
【０１９４】
端末装置３０は、これら分散情報Ｓ３（＝Ｓ{3,1}，Ｓ{3,2}，Ｓ{3,3}）、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置（図示せず）に入力する。
【０１９５】
セキュアチップ装置は、分散情報Ｓ３、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）が入力されると、分散情報Ｓ３（＝Ｓ{3,1}，Ｓ{3,2}，Ｓ{3,3}）から乱数ｒを復元する。また、セキュアチップ装置は、得られた乱数ｒ及び原始元ｇから端末固有情報ＫP1に基づいて個別化鍵情報Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）を算出する。しかる後、セキュアチップ装置は、個別化鍵情報Ｋ及び共通鍵暗号方式に基づいた復号処理によりプログラムＣを復元し、得られたプログラムＣを端末装置４０内に送出する。
【０１９６】
端末装置３０は、セキュアチップ装置により得られたプログラムＣを実行し、実行終了後、当該プログラムＣを削除する。
【０１９７】
上述したように本実施形態によれば、乱数ｒ及び端末固有情報ＫP1に基づいて生成された個別化鍵情報Ｋに基づいてプログラムが暗号化されてなる暗号化プログラムＥ（Ｋ，Ｃ）と、乱数ｒを秘密分散した第１及び第２分散情報Ｓ０，Ｓ１〜Ｓ３とを各サーバ装置Ｓｖ１〜Ｓｖ８に秘密分散し、プログラム処理時に、端末装置４０内のセキュアチップ装置（情報プログラム保護装置）がこれら暗号化プログラムＥ（Ｋ，Ｃ）及び分散情報（例、Ｓ３）からプログラムＣを復元するので、端末装置４０内のセキュアチップ装置が保持する秘密情報（鍵情報）やプログラムのセキュリティ性を向上することができる。また、セキュアチップ装置は、復元したプログラムを実行せずに端末装置４０内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、秘密分散法を用いる際に、（ｋ，ｎ）しきい値法と（｜Ａｉ｜，｜Ａｉ｜）しきい値法を用いたので、（｜Ａｉ｜，｜Ａｉ｜）しきい値法のみを用いる場合に比べ、分散情報の個数を抑制することができる（図１３及び図１４参照）。
【０１９８】
（第６の実施形態）
図１５は本発明の第６の実施形態に係る情報プログラム保護装置が適用されるセキュアチップ装置を備えた端末装置及びその周辺構成を示す模式図である。
【０１９９】
本実施形態は、第５の実施形態の具体例であり、端末装置４０の構成が具体的に述べられている。
【０２００】
ここで、端末装置４０は、プログラム実行部１１、メモリ１１ａ、通信部４１及びセキュアチップ装置４２を備えている。セキュアチップ装置４２は、具体的には、制御部４３、端末固有情報格納部１５、乱数復元部４４、個別化鍵復元処理部４５、個別化処理部３５、鍵情報格納部１８及びセキュリティ処理部１９を備えている。
【０２０１】
プログラム実行部１１は、プログラム（又は鍵情報）を入手するため、通信部４１を介して第１〜第６サーバ装置Ｓｖ１〜Ｓｖ６の極小グループＡ０又はＡｉ及び第７〜第８サーバ装置Ｓｖ７，Ｓｖ８にプログラム（又は鍵情報）を要求する機能と、セキュアチップ装置４２から受けたプログラム（又は鍵ＩＤｋ）をメモリ１１ａに記憶させて実行する機能と、プログラムの実行終了後、メモリ１１ａ内のプログラムをメモリ１１ａから削除する機能とをもっている。
【０２０２】
プログラム実行部１１は、前述した通り、プログラムの実行中、必要により、セキュリティ処理要求をセキュアチップ装置４２に入力する機能と、得られた実行結果Ｐ（Ｋ，Ｄ）を用い、現在実行中のプログラムの実行を継続する機能とをもっている。
【０２０３】
メモリ１１ａは、前述同様に、プログラム実行部１１から読出／書込可能な記憶部である。
【０２０４】
通信部４１は、プログラム実行部１１から受けた要求を第１〜第６サーバ装置Ｓｖ１〜Ｓｖ６の極小グループＡ０又はＡｉ及び第７〜第８サーバ装置Ｓｖ７，Ｓｖ８に送信する機能と、第１〜第８サーバ装置Ｓｖ１〜Ｓｖ８から受けた分散情報Ｓ０〜Ｓ３のいずれか、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置４２に入力する機能とをもっている。なお、分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）は、前述同様に通信部３１からプログラム実行部１１を介してセキュアチップ装置４２に入力してもよい。
【０２０５】
セキュアチップ装置４２は、端末装置４０に内蔵されたシングルチップ形式の耐タンパー性ハードウェアからなり、通信部４１から分散鍵情報Ｋ’及び暗号化プログラムＥ（Ｋ，Ｃ）が入力されると、以下の各部４３〜４５，３５，１５により、復元されたプログラムＣ又は鍵ＩＤｋをプログラム実行部１１に出力する機能と、プログラム実行部１１からセキュリティ処理要求（処理ＩＤｐ，鍵ＩＤｋ，データＤ）が入力されると、以下の各部４３，１８，１９により、セキュリティ処理の実行結果Ｐ（Ｋ，Ｄ）をプログラム実行部１１に出力する機能をもっている。
【０２０６】
制御部４３は、入力内容に応じ、復元されたプログラムＣ、鍵ＩＤｋ、又は実行結果Ｐ（Ｋ，Ｄ）を得るように、各部４４〜４５，３５，１５，１８〜１９を制御する機能と、得られた結果をプログラム実行部１１に出力する機能とをもっている。なお、端末固有情報格納部１５、個別化処理部３５、鍵情報格納部１８及びセキュリティ処理部１９は、前述同様のものである。
【０２０７】
乱数復元部４４は、制御部３３から入力された分散情報Ｓ０〜Ｓ３のいずれかに基づいて乱数ｒを復元する機能と、得られた乱数ｒを制御部４３に送出する機能とをもっている。
【０２０８】
個別化鍵復元処理部３４は、制御部３３から入力された乱数ｒ、原始元ｇ及び端末固有情報ＫP1に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）＝）を算出し、得られた個別化鍵情報Ｋを制御部４３に送出する機能をもっている。
【０２０９】
次に、以上のように構成された端末装置の動作を図１６のフローチャートを用いて説明する。  
（プログラムの復元）
いま、第５の実施形態と同様に、プログラムＣを秘密分散及び個別化してなる分散情報Ｓ０〜Ｓ３、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）が、それぞれ第１〜第８サーバ装置Ｓｖ１〜Ｓｖ８に記憶されているとする。
【０２１０】
一方、端末装置４０においては、前述同様に、極小グループＡ３に属する第２〜第４サーバ装置Ｓｖ２〜Ｓｖ４に対し、図１３に示すような第２分散情報Ｓ３を要求する。また、端末装置４０は、第７及び第８サーバ装置Ｓｖ７，Ｓｖ８にも情報を要求する。
【０２１１】
また、端末装置３０は、各サーバ装置Ｓｖ２〜ＳＶ４，Ｓｖ７，Ｓｖ８から受けた分散情報Ｓ３（＝Ｓ{3,1}，Ｓ{3,2}，Ｓ{3,3}）、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ）をセキュアチップ装置４２に入力する。
【０２１２】
セキュアチップ装置４２は、入力があると、入力内容を識別する（ＳＴ４１Ｒ）。入力内容が個別化されたプログラムに相当する分散情報Ｓ３、原始元ｇ及び暗号化プログラムＥ（Ｋ，Ｃ’）の場合（ＳＴ４２Ｒ）、制御部４３が分散情報Ｓ３を乱数復元部４４に入力する。
【０２１３】
乱数復元部４４は、この分散情報Ｓ３から乱数ｒを復元し（ＳＴ４３Ｒ−１）、得られた乱数ｒを制御部４３に出力する。
【０２１４】
制御部４３は、この乱数ｒ、原始元ｇ及び端末固有情報ＫP1を個別化鍵復元処理部４５に入力する。
【０２１５】
個別化鍵復元処理部４５は、この乱数ｒ、原始元ｇ及び端末固有情報ＫP1に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）＝）を復元し（ＳＴ４３Ｒ−２）、得られた個別化鍵情報Ｋを制御部４３に送出する。
【０２１６】
制御部４３は、この個別化鍵情報Ｋ及び暗号化プログラムＥ（Ｋ，Ｃ）を個別化処理部３５に入力する。以下、前述同様にＳＴ４４以降の処理が実行される。
【０２１７】
（セキュリティ処理の実行）
セキュリティ処理は、第２の実施形態と同様に実行される。  
（鍵情報の復元）
鍵情報の復元処理は、前述したプログラムＣに代えて、鍵情報Ｋｃが秘密分散され個別化された場合に当該鍵情報Ｋｃを復元する内容である。以下、順次説明する。
【０２１８】
いま、前述同様に、鍵情報Ｋｃを秘密分散及び個別化してなる秘密分散及び個別化してなる分散情報Ｓ０〜Ｓ３、原始元ｇ及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）が、それぞれ第１〜第８サーバ装置Ｓｖ１〜Ｓｖ８に記憶されているとする。
【０２１９】
一方、端末装置４０においては、前述同様にして、各サーバ装置Ｓｖ２〜ＳＶ４，Ｓｖ７，Ｓｖ８から分散情報Ｓ３（＝Ｓ{3,1}，Ｓ{3,2}，Ｓ{3,3}）、原始元ｇ及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）を受けると、これらをセキュアチップ装置４２に入力する。
【０２２０】
セキュアチップ装置４２は、入力があると、入力内容を識別する（ＳＴ４１Ｒ）。入力内容が個別化された鍵情報Ｋｃに相当する分散情報Ｓ３、原始元ｇ及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）の場合（ＳＴ４６Ｒ）、制御部４３が分散情報Ｓ３を乱数復元部４４に入力する。
【０２２１】
乱数復元部４４は、この分散情報Ｓ３から乱数ｒを復元する（ＳＴ４７Ｒ−１）。詳しくは、乱数復元部４４は、次の（α）又は（β）のようにして乱数ｒを復元する。
【０２２２】
（α）入力された分散情報がＳ０に含まれる分散情報であり、入力された個数が（Ｌ＋１）個以上のとき、（Ｌ＋１，ｎ’）しきい値法によりｒを復元する。
【０２２３】
（β）入力された分散情報がＳｉ（１≦ｉ≦ｄ）に含まれる分散情報であり、入力された個数が｜Ａｉ｜個以上のとき、（｜Ａｉ｜，｜Ａｉ｜）しきい値法によりｒを復元する。
【０２２４】
しかる後、乱数復元部４４は得られた乱数ｒを制御部４３に出力する。
【０２２５】
制御部４３は、この乱数ｒ、原始元ｇ及び端末固有情報ＫP1を個別化鍵復元処理部４５に入力する。
【０２２６】
個別化鍵復元処理部４５は、この乱数ｒ、原始元ｇ及び端末固有情報ＫP1に基づいて、個別化鍵Ｋ（＝（ｇｒ）ＫP1 ｍｏｄ ｐ）＝）を復元し（ＳＴ４７Ｒ−２）、得られた個別化鍵情報Ｋを制御部４３に送出する。
【０２２７】
制御部４３は、この個別化鍵情報Ｋ及び暗号化鍵情報Ｅ（Ｋ，Ｋｃ）を個別化処理部３５に入力する。以下、前述同様にＳＴ４８以降の処理が実行される。
【０２２８】
上述したように本実施形態によれば、第５の実施形態の効果に加え、プログラムの場合と同様に、秘密分散され個別化された鍵情報を復元することができる。また、鍵情報を用いる任意のセキュリティ処理をセキュアチップ装置４２内で実行することができる。
【０２２９】
なお、本実施形態は、鍵情報Ｋだけではなく、セキュアチップ装置４２内部で動作するプログラム自体も鍵情報格納部１８に格納し、格納したプログラムに基づきセキュリティ処理部１９を実行してもよい。この場合、さらに高いセキュリティ性を実現できる。
【０２３０】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０２３１】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０２３２】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行しても良い。
【０２３３】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【０２３４】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０２３５】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０２３６】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０２３７】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０２３８】
【図１】本発明の第１の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図２】同実施形態における動作を説明するためのフローチャートである。
【図３】本発明の第２の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図４】同実施形態における動作を説明するためのフローチャートである。
【図５】本発明の第３の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図６】同実施形態における動作を説明するためのフローチャートである。
【図７】本発明の第４の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図８】同実施形態における動作を説明するためのフローチャートである。
【図９】本発明の第５の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図１０】同実施形態における動作を説明するためのフローチャートである。
【図１１】同実施形態における極小グループを説明するための模式図である。
【図１２】同実施形態における極小グループを説明するための模式図である。
【図１３】同実施形態における分散情報の個数を説明するための模式図である。
【図１４】従来手法による分散情報の個数を説明するための模式図である。
【図１５】本発明の第６の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図１６】同実施形態における動作を説明するためのフローチャートである。
【符号の説明】
【０２３９】
Ｓｖ０〜Ｓｖ８…サーバ装置、１…保護対象記憶部、２…端末固有情報記憶部、３…入力部、４…圧縮部、５…分散情報生成部、６…秘密分散部、７…個別化部、８…送信部、１０〜４０…端末装置、１１…プログラム実行部、１１ａ…メモリ、１２，３１，４１…通信部、１３，３２，４２…セキュアチップ装置、１４，３３，４３…制御部、１５…端末固有情報格納部、１６…個別化解除部、１７…分散プログラム復元部、１８…鍵情報格納部、１９…セキュリティ処理部、２１…乱数生成部、２２…分散鍵情報生成部、２３…個別化鍵生成部、２４…個別化部、２５…分散情報生成部、３４，４５…個別化鍵復元処理部、３５…個別化処理部、４４…乱数生成部。
【図１】
2006099697.tif 000003
【図２】
2006099697.tif 000004
【図３】
2006099697.tif 000005
【図４】
2006099697.tif 000006
【図５】
2006099697.tif 000007
【図６】
2006099697.tif 000008
【図７】
2006099697.tif 000009
【図８】
2006099697.tif 000010
【図９】
2006099697.tif 000011
【図１０】
2006099697.tif 000012
【図１１】
2006099697.tif 000013
【図１２】
2006099697.tif 000014
【図１３】
2006099697.tif 000015
【図１４】
2006099697.tif 000016
【図１５】
2006099697.tif 000017
【図１６】
2006099697.tif 000018