説明

情報プログラム保護方法及び装置

【課題】 保持する秘密情報やプログラムのセキュリティ性を向上でき、且つ任意のプログラムを実行できるようにする。
【解決手段】 圧縮プログラムCのビット長と同じビット長の乱数rからなる分散情報Sが端末固有情報KP1により暗号化されてなる暗号化分散情報E(KP1,S)と、分散情報S及び圧縮プログラムCの排他的論理和として算出された算出値S’が端末固有情報KP1により暗号化されてなる暗号化算出値E(KP1,S’)とを各サーバ装置Sv1,Sv2に秘密分散し、プログラム処理時に、端末装置10がこれら暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)から圧縮プログラムCを復元する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報プログラム保護方法及び装置に関する。
【背景技術】
【0002】
従来、PC(Personal computer)などのオープンアーキテクチャの機器においては、利用者固有の暗号鍵などの秘密情報及び/又はその秘密情報を扱うプログラム自体を保護したい場合がある。この場合、例えば耐タンパーソフトウェア技術を用いた情報プログラム保護方法や、ICカード等の耐タンパー性の高いハードウェアに秘密情報やプログラムを格納してハードウェア内でプログラムを実行する情報プログラム保護方法などが適用可能となっている。
【0003】
ここで、前者の情報プログラム保護方法は、耐タンパー性ソフトウェアを用い、保持する秘密情報やプログラムのセキュリティ性の向上を図るものである。しかしながら、この方法は、耐タンパー性ソフトウェアの耐タンパー性が低いことから、耐タンパー性ソフトウェアが解析されると、保持する秘密情報が漏洩しシステム全体に多大な影響を及ぼす恐れがある。
【0004】
一方、後者の情報プログラム保護方法は、耐タンパー性ハードウェアを用い、保持する秘密情報やプログラムのセキュリティ性の向上を図るものである。しかしながら、この方法は、ハードウェアの耐タンパー性が高いことからセキュリティ性は高いものの、耐タンパー性ハードウェアの処理能力に制限があるため、実行可能なプログラムが耐タンパー性ハードウェアの処理能力以下に制限されてしまう。
【0005】
なお、この出願に関係する先行技術文献としては、秘密情報を分散して管理するための秘密分散法がある(非特許文献1,2参照。)。しかしながら、秘密分散法は分散情報の個数を増大させ易い不都合がある。
【非特許文献1】A. Shamir, “How to share a secret”, Communications of the ACM, 22, 11, pp. 612 - 613, 1979.
【非特許文献2】J. Benaloh, J. Leichter, “Generalized secret sharing and monotone functions”, Proceedings of CRYPTO ’88, pp. 27 - 35, 1988.
【発明の開示】
【発明が解決しようとする課題】
【0006】
以上説明したように、従来の情報プログラム保護方法は、耐タンパーソフトウェア技術を用いる場合、耐タンパーソフトウェアの解析により、保持する秘密情報を漏洩させる恐れがあるので、セキュリティ性の向上が望まれるものとなっている。
【0007】
一方、耐タンパー性の高いハードウェア内でプログラムを実行する場合、耐タンパー性ハードウェアの処理能力に制限があるため、実行可能なプログラムが制限される。
また、秘密分散法は分散情報の個数を増大させ易い不都合がある。
【0008】
本発明は上記実情を考慮してなされたもので、保持する秘密情報やプログラムのセキュリティ性を向上でき、且つ任意のプログラムを実行し得る情報プログラム保護方法及び装置を提供することを目的とする。
【0009】
また、本発明の他の目的は、秘密分散法を用いた際に、分散情報の個数を抑制し得る情報プログラム保護方法を提供することにある。
【課題を解決するための手段】
【0010】
第1の発明は、端末固有情報を有して共通鍵暗号方式、排他的論理和及び圧縮プログラム解凍を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、前記各サーバ装置のうちの分散用サーバ装置が、0と1からなるバイナリ形式の前記プログラムに対し、前記0と1の偏りを少なくするように前記プログラムを圧縮し、圧縮プログラムを得る工程と、前記分散用サーバ装置が当該圧縮プログラムのビット長を算出する工程と、前記分散用サーバ装置が前記ビット長と同じビット長の乱数からなる分散情報を生成する工程と、前記分散用サーバ装置が前記分散情報と前記圧縮プログラムとの各ビットの排他的論理和を算出し、算出値を得る工程と、前記分散用サーバ装置が前記算出値を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値を得る工程と、前記分散用サーバ装置が前記分散情報を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報を得る工程と、前記分散用サーバ装置が前記暗号化分散情報及び暗号化算出値のうち、少なくとも一方を他のサーバ装置に送信する工程とを備えた情報プログラム保護方法である。
【0011】
第2の発明は、端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、圧縮プログラムのビット長と同じビット長の乱数からなる分散情報が端末固有情報により暗号化されてなる暗号化分散情報が前記端末装置から入力される暗号化分散情報入力手段と、前記分散情報と前記圧縮プログラムとの排他的論理和として算出された算出値が端末固有情報により暗号化されてなる暗号化算出値が前記端末装置から入力される暗号化算出値入力手段と、前記入力された暗号化分散情報及び暗号化算出値から前記端末固有情報格納手段内の端末固有情報に基づいて、圧縮プログラムを復元するプログラム復元手段と、前記復元された圧縮プログラムを前記端末装置内に出力する出力手段と、鍵情報が格納される鍵情報格納手段と、入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、前記実行結果を前記端末装置内に出力する実行結果出力手段とを備えた情報プログラム保護装置である。
【0012】
第3の発明は、端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、前記各サーバ装置のうちの分散用サーバ装置が乱数を生成する工程と、前記分散用サーバ装置が前記乱数に基づいて分散鍵情報を生成する工程と、前記分散用サーバ装置が前記分散鍵情報から前記端末固有情報に基づいて、個別化鍵情報を生成する工程と、前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、前記分散用サーバ装置が前記暗号化プログラム及び前記分散鍵情報のうち、少なくとも一方を他のサーバ装置に送信する工程とを備えた情報プログラム保護方法である。
【0013】
第4の発明は、端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムが前記端末装置から入力される暗号化プログラム入力手段と、前記分散鍵情報が前記端末装置から入力される分散鍵情報入力手段と、前記入力された分散鍵情報及び暗号化プログラムから前記端末固有情報格納手段内の端末固有情報に基づいて、プログラムを復元するプログラム復元手段と、前記復元されたプログラムを前記端末装置内に出力する出力手段と、鍵情報が格納される鍵情報格納手段と、入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、前記実行結果を前記端末装置内に出力する実行結果出力手段とを備えた情報プログラム保護装置である。
【0014】
第5の発明は、端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムの秘密分散に用いる乱数及び当該プログラムを少なくともn台のサーバ装置に秘密分散する情報プログラム保護方法であって、前記各サーバ装置のうちの分散用サーバ装置が乱数を生成する工程と、前記分散用サーバ装置が前記乱数及び端末固有情報に基づいて、個別化鍵情報を生成する工程と、前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、前記分散用サーバ装置が、前記乱数rを復元可能なn台以下のサーバ装置のグループの中で、一台でも欠けると乱数rが復元不可能となるグループである極小グループに基づいて、任意の(L+1)台のサーバ装置のグループでは乱数rを復元可能となる旨の最小の台数Lを定める工程と、L台以下のサーバ装置からなり、前記L台以下のサーバ装置により乱数rを復元可能で且つ1台でもサーバ装置が減ると、乱数rが復元不可能となる旨のd個の極小グループA(但し、1≦i≦d)を前記分散用サーバ装置に設定する工程と、任意の(L+1)台のサーバ装置のグループの中の極小グループに含まれるサーバ装置の集合をAとし、集合Aに含まれるサーバ装置の台数n’を求め、(L+1,n’)しきい値法により、乱数rに対する第1分散情報S={s,…,s’}を生成する工程と、前記集合Aに含まれるサーバ装置に対し、前記第1分散情報Sに含まれる要素{s,…,s’}を重複なく割り当てる工程と、前記分散用サーバ装置が、前記極小グループA毎に(|A|,|A|)しきい値法により(但し|A|はAに属するサーバ装置の台数)、前記乱数rの第2分散情報S={s{i,1},…,s{i,|Ai|}}を生成する工程と、前記分散用サーバ装置が、前記極小グループA毎に、前記第2分散情報Sに含まれる要素{s{i,1},…,s{i,|Ai|}}を当該極小グループAに含まれる各サーバ装置に個別に割り当てる工程とを備えた情報プログラム保護方法である。
【0015】
(作用)
第1及び第2の発明は、圧縮プログラムのビット長と同じビット長の乱数からなる分散情報が端末固有情報により暗号化されてなる暗号化分散情報と、分散情報及び圧縮プログラムの排他的論理和として算出された算出値が端末固有情報により暗号化されてなる暗号化算出値とを各サーバ装置に秘密分散し、プログラム処理時に、端末装置内の情報プログラム保護装置がこれら暗号化分散情報及び暗号化算出値から圧縮プログラムを復元するので、情報プログラム保護装置が保持する秘密情報(鍵情報)やプログラムのセキュリティ性を向上することができる。また、情報プログラム保護装置は、復元した圧縮プログラムを実行せずに端末装置内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、排他的論理和を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【0016】
第3及び第4の発明は、乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムと、分散鍵情報とを各サーバ装置に秘密分散し、プログラム処理時に、端末装置内の情報プログラム保護装置がこれら暗号化プログラム及び分散鍵情報からプログラムを復元するので、情報プログラム保護装置が保持する秘密情報(鍵情報)やプログラムのセキュリティ性を向上することができる。また、情報プログラム保護装置は、復元したプログラムを実行せずに端末装置内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、暗号化プログラム及び分散鍵情報を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【0017】
第5の発明は、乱数及び端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムと、乱数を秘密分散した第1及び第2分散情報とを各サーバ装置に秘密分散し、プログラム処理時に、端末装置内の情報プログラム保護装置がこれら暗号化プログラム及び各分散情報からプログラムを復元するので、情報プログラム保護装置が保持する秘密情報(鍵情報)やプログラムのセキュリティ性を向上することができる。また、情報プログラム保護装置は、復元したプログラムを実行せずに端末装置内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、秘密分散法を用いる際に、(L+1,n’)しきい値法と(|Ai|,|Ai|)しきい値法を用いたので、(|Ai|,|Ai|)しきい値法のみを用いる場合に比べ、分散情報の個数を抑制することができる(図13及び図14参照)。
【発明の効果】
【0018】
以上説明したように本発明によれば、保持する秘密情報やプログラムのセキュリティ性を向上でき、且つ任意のプログラムを実行できる。また、秘密分散法を用いた際に、分散情報の個数を抑制できる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の各実施形態について図面を参照しながら説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。このシステムは、分散用サーバ装置Sv0、第1サーバ装置SV1、第2サーバ装置Sv2及び端末装置10を備えている。
【0020】
ここで、3台のサーバ装置Sv0〜Sv2は、説明の便宜上3台としたが、3台に限らず、1台のサーバ装置として実現しても良く、また任意の2台を一体化した1台のサーバ装置と残りの1台のサーバ装置とからなる2台のサーバ装置として実現しても良い。このことは以下の各実施形態でも同様である。
【0021】
分散用サーバ装置Sv0は、保護対象記憶部1、端末固有情報記憶部2、入力部3、圧縮部4、分散情報生成部5、秘密分散部6、個別化部7及び送信部8を備えている。
【0022】
保護対象記憶部1は、端末装置10に利用される鍵情報及び/又はプログラム等といった保護対象が記憶されるメモリであり、入力部3により書込可能で、圧縮部4により読出可能となっている。
【0023】
端末固有情報記憶部2は、端末装置10固有の情報として、鍵やIDなどの端末固有情報KP1が記憶されるメモリであり、個別化部7により読出可能となっている。
【0024】
入力部3は、端末装置10に利用される鍵情報及び/又はプログラム等といった保護対象を保護対象記憶部1に書込むための入力デバイスである。
【0025】
圧縮部4は、保護対象記憶部1に記憶されて0と1からなるバイナリ形式のプログラムに対し、0と1の偏りを少なくするようにプログラムを圧縮し、圧縮プログラムCを得るものである。
【0026】
分散情報生成部5は、圧縮部4により得られた圧縮プログラムCのビット長を算出する機能と、得られたビット長と同じビット長の乱数rからなる分散情報Sを生成するものである。
【0027】
秘密分散部6は、分散情報生成部5により得られた分散情報Sと圧縮プログラムCとの各ビットの排他的論理和を算出し、算出値S’を得るものである。
【0028】
個別化部7は、秘密分散部6により得られた算出値S’を端末固有情報記憶部2内の端末固有情報KP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値E(KP1,S’)を得る機能と、分散情報生成部5により得られた分散情報Sを端末固有情報記憶部2内の端末固有情報KP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報E(KP1,S)を得る機能とをもっている。
【0029】
送信部8は、個別化部7により得られた暗号化分散情報E(KP1,S)を第1サーバ装置Sv1に送信する機能と、個別化部7により得られた暗号化算出値E(KP1,S’)を第2サーバ装置Sv2に送信する機能とをもっている。
【0030】
第1サーバ装置Sv1は、分散用サーバ装置Sv0から受けた暗号化分散情報E(KP1,S)をメモリに記憶する機能と、端末装置10からの要求に基づいて、メモリ内の暗号化分散情報E(KP1,S)を端末装置10に送信する機能とをもっている。
【0031】
第2サーバ装置Sv2は、分散用サーバ装置Sv0から受けた暗号化算出値E(KP1,S’)をメモリに記憶する機能と、端末装置10からの要求に基づいて、メモリ内の暗号化算出値E(KP1,S’)を端末装置10に送信する機能とをもっている。
【0032】
端末装置10は、端末固有情報KP1を有して共通鍵暗号方式及び排他的論理和を実行可能なセキュアチップ装置(図示せず)を備えた計算機である。
【0033】
ここで、端末装置10内のセキュアチップ装置は、例えばシングルチップ形式の耐タンパー性ハードウェアからなり、入力された暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をそれぞれ端末固有情報KP1及び共通鍵暗号方式に基づいた復号処理により復号し、分散情報S及び算出値S’を得る機能と、得られた分散情報S及び算出値S’の排他的論理和S XOR S’を算出して圧縮プログラムCを復元する機能とをもっている。
【0034】
また、端末装置10は、第1サーバ装置Sv1に暗号化分散情報E(KP1,S)を要求する機能と、第2サーバ装置Sv2に暗号化算出値E(KP1,S’)を要求する機能と、各サーバSv1,Sv2から受けた暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をセキュアチップ装置に入力する機能と、セキュアチップ装置により得られた圧縮プログラムCを解凍してプログラムを復元する機能と、プログラムを実行して実行終了後に当該プログラムを削除する機能とをもっている。
【0035】
次に、以上のように構成された秘密分散システムの動作を図2のフローチャートを用いて説明する。
分散用サーバ装置Sv0では、入力部3が、鍵情報及び/又はプログラム等といった保護対象を保護対象記憶部1に書込む。しかる後、圧縮部4は、保護対象記憶部1に記憶されて0と1からなるバイナリ形式のプログラムに対し、0と1の偏りを少なくするようにデータ圧縮手法によりプログラムを圧縮し(ST1)、圧縮プログラムCを得る。データ圧縮手法には、Zip形式やLZH形式等の標準的なデータ圧縮アルゴリズムが使用可能である。
【0036】
分散情報生成部5は、この圧縮プログラムCのビット長を算出し、得られたビット長と同じビット長の乱数rからなる分散情報Sを生成する(ST2)。例えば、圧縮プログラムのビット長がnビットであり、圧縮プログラムの各ビットをcとすると、圧縮プログラムCは、C=(c,c,…,c) 1≦i≦nと表される。このとき、圧縮プログラムCと同じビット長の乱数rからなる分散情報Sは、S=(s,s,…,s) 1≦i≦nと生成される。
【0037】
秘密分散部6は、この分散情報Sと圧縮プログラムCとの各ビットの排他的論理和を算出し、算出値S’を得る。例えば、排他的論理和の算出値S’は、S’=(s’,s’,…,s’) 1≦i≦n と表される。但し、s’=c XOR s 1≦i≦nである。これにより、圧縮プログラムCは秘密分散される(ST3)。
【0038】
個別化部7は、この算出値S’を端末固有情報記憶部2内の端末固有情報KP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値E(KP1,S’)を得る。同様に、個別化部7は、分散情報生成部5により得られた分散情報Sを端末固有情報記憶部2内の端末固有情報KP1及び共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報E(KP1,S)を得る。このように、秘密分散された圧縮プログラムCは、端末固有情報KP1に基づいて、暗号化分散情報E(KP1,S)と暗号化算出値E(KP1,S’)に個別化される(ST4)。この個別化により、端末固有情報KP1が無い場合には元のプログラムを正しく復元することができない。また秘密分散により、端末固有情報KP1があったとしても、暗号化分散情報E(KP1,S)と暗号化算出値E(KP1,S’)との一方だけからでは元のプログラムを復元できない。
【0039】
送信部8は、暗号化分散情報E(KP1,S)を第1サーバ装置Sv1に送信する一方、暗号化算出値E(KP1,S’)を第2サーバ装置Sv2に送信する。
【0040】
第1サーバ装置Sv1は、暗号化分散情報E(KP1,S)をメモリに記憶する。第2サーバ装置Sv2は、暗号化算出値E(KP1,S’)をメモリに記憶する。これにより、プログラムの秘密分散が完了する。
【0041】
続いて、端末装置10が秘密分散されたプログラムを復元する動作について述べる。
【0042】
端末装置10は、図示しないユーザの操作等により、第1サーバ装置Sv1に暗号化分散情報E(KP1,S)を要求すると共に、第2サーバ装置Sv2に暗号化算出値E(KP1,S’)を要求する。
【0043】
第1サーバ装置Sv1は、この要求に基づいて、メモリ内の暗号化分散情報E(KP1,S)を端末装置10に送信する。同様に、第2サーバ装置Sv2は、この要求に基づいて、メモリ内の暗号化算出値E(KP1,S’)を端末装置10に送信する。
【0044】
端末装置10においては、図示しないセキュアチップ装置が、各サーバSv1,Sv2から受けた暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をそれぞれ端末固有情報KP1及び共通鍵暗号方式に基づいた復号処理により復号し、分散情報S及び算出値S’を得る。
【0045】
また、セキュアチップ装置は、得られた分散情報S及び算出値S’の排他的論理和S XOR S’を算出して圧縮プログラムCを復元し、端末装置10内に出力する。
【0046】
端末装置10は、セキュアチップ装置により得られた圧縮プログラムCを解凍してプログラムを復元する。しかる後、端末装置10はプログラムを実行し、実行終了後、当該プログラムを削除する。
【0047】
上述したように本実施形態によれば、圧縮プログラムCのビット長と同じビット長の乱数rからなる分散情報Sが端末固有情報KP1により暗号化されてなる暗号化分散情報E(KP1,S)と、分散情報S及び圧縮プログラムCの排他的論理和として算出された算出値S’が端末固有情報KP1により暗号化されてなる暗号化算出値E(KP1,S’)とを各サーバ装置Sv1,Sv2に秘密分散し、プログラム処理時に、端末装置10がこれら暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)から圧縮プログラムCを復元するようにしたので、端末装置10内のセキュアチップ装置が保持する秘密情報(鍵情報)や、端末装置10が実行するプログラムのセキュリティ性を向上させることができる。
【0048】
具体的にはデータやプログラムを秘密分散や個別化処理することで、データやプログラムの配布時のセキュリティや端末の記憶装置に保存されているデータやプログラムのセキュリティの向上が可能となる。例えば、端末装置10がプログラムを持たないので、プログラムを不正な利用又は解析から保護することができる。また、プログラムは、秘密分散され個別化された状態で外部のサーバ装置Sv1,Sv2に記憶されているので、不正な利用又は解析から保護されている。
【0049】
また、セキュアチップ装置は、復元した圧縮プログラムを実行せずに端末装置10内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、排他的論理和を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【0050】
(第2の実施形態)
図3は本発明の第2の実施形態に係る情報プログラム保護装置が適用されるセキュアチップ装置を備えた端末装置及びその周辺構成を示す模式図であり、図1と同一部分には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。なお、以下の各実施形態も同様にして重複した説明を省略する。
【0051】
すなわち、本実施形態は、第1の実施形態の具体例であり、端末装置10の構成が具体的に述べられている。
【0052】
ここで、端末装置10は、プログラム実行部11、メモリ11a、通信部12及びセキュアチップ装置13を備えている。セキュアチップ装置13は、具体的には、制御部14、端末固有情報格納部15、個別化解除部16、分散プログラム復元部17、鍵情報格納部18及びセキュリティ処理部19を備えている。
【0053】
プログラム実行部11は、プログラム(又は鍵情報)を入手するため、通信部12を介して第1及び第2サーバ装置Sv1,Sv2にプログラム(又は鍵情報)を要求する機能と、セキュアチップ装置13から受けた圧縮プログラムCを解凍し、得られたプログラム(又は鍵ID)をメモリ11aに記憶させて実行する機能と、プログラムの実行終了後、メモリ11a内のプログラムをメモリ11aから削除する機能とをもっている。
【0054】
プログラム実行部11は、プログラムの実行中、必要により、処理ID、鍵ID及びデータDからなるセキュリティ処理要求をセキュアチップ装置13に入力する機能と、セキュアチップ装置13から受けたセキュリティ処理の実行結果P(K,D)を用い、現在実行中のプログラムの実行を継続する機能とをもっている。
【0055】
メモリ11aは、プログラム実行部11から読出/書込可能な記憶部であり、圧縮プログラムC、解凍後のプログラム、実行結果P(K,D)、鍵IDなどが適宜記憶される。
【0056】
通信部12は、プログラム実行部11から受けた要求を第1及び第2サーバ装置Sv1,Sv2に送信する機能と、第1及び第2サーバ装置Sv1,Sv2から受けた暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をセキュアチップ装置13に入力する機能とをもっている。なお、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)は、通信部12からセキュアチップ装置13に入力される場合に限らず、通信部12からプログラム実行部11を介してセキュアチップ装置13に入力されるようにしてもよい。
【0057】
セキュアチップ装置13は、端末装置10に内蔵されたシングルチップ形式の耐タンパー性ハードウェアからなり、通信部12から暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)が入力されると、以下の各部14〜18により、復元された圧縮プログラムC又は鍵IDをプログラム実行部11に出力する機能と、プログラム実行部11からセキュリティ処理要求(処理ID,鍵ID,データD)が入力されると、以下の各部14,18,19により、セキュリティ処理の実行結果P(K,D)をプログラム実行部11に出力する機能をもっている。
【0058】
ここで、セキュリティ処理としては、鍵情報格納部18内の鍵情報Kを用いる処理であり、例えば暗号化処理、復号処理、署名生成処理、認証子の生成処理、又は認証子の検証処理などが使用可能となっている。なお、データDは、必ずしもセキュリティ処理要求に含まれる必要は無く、例えばセキュリティ処理部19等が乱数(又は時刻データ)等の数値データを生成してデータDとする場合にはセキュリティ処理要求から省略してもよい。
【0059】
制御部14は、入力内容に応じ、復元された圧縮プログラムC、鍵ID、又は実行結果P(K,D)を得るように、各部15〜19を制御する機能と、得られた結果をプログラム実行部11に出力する機能とをもっている
端末固有情報格納部15は、端末固有情報KP1が記憶される耐タンパーメモリであり、制御部14から読出/書込可能となっている。端末固有情報KP1は、個別化されたプログラム等の個別化を解除する際に利用される情報であり、各端末装置毎に固有の値(鍵又はID等)が用いられる。ここで、「個別化」の語は、「特定の端末装置でのみ復号可能な暗号化」を意味し、「個別化を解除」の語は「復号」を意味する。
【0060】
個別化解除部16は、制御部14から端末固有情報KP1、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)が入力されると、端末固有情報KP1に基づいて、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をそれぞれ復号し(て個別化を解除し)、分散情報S及び算出値S’を復元する機能と、得られた分散情報S及び算出値S’を制御部14に出力する機能とをもっている。
【0061】
分散プログラム復元部17は、制御部14から入力された分散情報Sと算出値S’との排他的論理和を算出し、得られた算出結果C(又は鍵情報K,鍵ID)を制御部14に出力する機能をもっている。
【0062】
鍵情報格納部18は、鍵情報K及び鍵IDが互いに関連付けられて記憶される耐タンパーメモリであり、制御部14から読出/書込可能となっている。
【0063】
セキュリティ処理部19は、制御部14から鍵情報K、処理ID及びデータDが入力されると、処理IDで指定された処理Pを鍵情報Kに基づいてデータDに実行する機能と、得られた実行結果P(K,D)を制御部14に出力する機能とをもっている。
【0064】
次に、以上のように構成された端末装置の動作を図4のフローチャートを用いて説明する。
(プログラムの復元)
いま、第1の実施形態と同様に、圧縮プログラムCを秘密分散及び個別化してなる暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)が、それぞれ第1及び第2サーバ装置Sv1,Sv2に記憶されているとする。
【0065】
一方、端末装置10においては、図示しない外部操作等により、プログラムの実行がプログラム実行部11に要求される。プログラム実行部11は、実行するプログラムを入手するため、通信部12を介して第1及び第2サーバ装置Sv1,Sv2にプログラムを要求する。
【0066】
第1及び第2サーバ装置Sv1,Sv2は、それぞれ要求を受けると、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)を個別に端末装置10に返信する。
【0067】
通信部12は、受信した暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をセキュアチップ装置13に入力する。
【0068】
セキュアチップ装置13は、入力があると、入力内容を識別する(ST11)。入力内容が個別化されたプログラムに相当する暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)の場合(ST12)、制御部14が端末固有情報格納部15から端末固有情報KP1を読出す。
【0069】
制御部14は、この端末固有情報KP1及び入力された暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)を個別化解除部16に入力する。
【0070】
個別化解除部16は、端末固有情報KP1に基づいて、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をそれぞれ復号し(て個別化を解除し)、分散情報S及び算出値S’を復元する(ST13)。なお、分散情報Sと算出値S’との組は秘密分散プログラムS,S’と呼んでもよい。個別化解除部16は、分散情報S及び算出値S’からなる秘密分散プログラムS,S’を制御部14に出力する。
【0071】
制御部14は、この秘密分散プログラムS,S’を分散プログラム復元部17に入力する。分散プログラム復元部17は、秘密分散プログラムS,S’における分散情報Sと算出値S’との排他的論理和を算出し、算出結果Cを得る。この算出結果Cは圧縮プログラムCに相当するので、圧縮プログラムCが復元される(ST14)。分散プログラム復元部17は、圧縮プログラムCを制御部14に出力する。
【0072】
制御部14は、この圧縮プログラムCをチップ13外部のプログラム実行部11に出力する(ST15)。
【0073】
プログラム実行部11は、圧縮プログラムCを解凍し、得られたプログラムをメモリ11aに記憶させて実行する。プログラムの実行終了後、プログラム実行部11は、メモリ11a内のプログラムをメモリ11aから削除し、処理を終了する。
【0074】
(セキュリティ処理の実行)
いま、端末装置10においては、例えばプログラム実行部11によるプログラムの実行中、処理IDで示されるセキュリティ処理の実行結果が必要になったとする。このとき、プログラム実行部11は、処理ID、鍵ID及びデータDからなるセキュリティ処理要求をセキュアチップ装置13に入力する。
【0075】
セキュアチップ装置11においては、前述同様に入力内容が識別される(ST11)。入力内容が処理ID、鍵ID及びデータDからなるセキュリティ処理要求の場合(ST16)、制御部14は、入力された処理要求に含まれる鍵IDに基づいて、鍵情報格納部18から鍵情報Kを読出す。
【0076】
制御部14は、読出した鍵情報K、処理要求に含まれる処理ID及びデータDをセキュリティ処理部19に入力する(ST17)。
【0077】
セキュリティ処理部19は、処理IDで指定された処理を鍵情報Kに基づいてデータDに実行し(ST18)、実行結果P(K,D)を得る。なお、指定される処理としては、例えば、暗号化処理、復号処理、署名生成処理、認証子の生成処理、又は認証子の検証処理などが適用可能となっている。いずれにしても、セキュリティ処理部19は、得られた実行結果P(K,D)を制御部14に出力する。
【0078】
制御部14は、この実行結果P(K,D)をチップ13外部のプログラム実行部11に出力する(ST19)。
【0079】
プログラム実行部11は、この実行結果P(K,D)を用い、現在実行中のプログラムの実行を継続する。なお、プログラムの実行終了後、プログラム実行部11は、メモリ11a内のプログラムをメモリ11aから削除し、処理を終了する。
【0080】
(鍵情報の復元)
鍵情報Kの復元処理は、前述した圧縮プログラムCに代えて、鍵情報Kが秘密分散され個別化された場合に当該鍵情報Kを復元する内容である。但し、鍵情報Kは必ずしも圧縮されている必要はない。以下、順次説明する。
【0081】
いま、前述同様に、鍵情報Kを秘密分散及び個別化してなる暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)が、それぞれ第1及び第2サーバ装置Sv1,Sv2に記憶されているとする。
【0082】
一方、端末装置10においては、図示しない外部操作等により、鍵情報Kの入手がプログラム実行部11に要求される。プログラム実行部11は、鍵情報Kを入手するため、通信部12を介して第1及び第2サーバ装置Sv1,Sv2に鍵情報Kを要求する。
【0083】
第1及び第2サーバ装置Sv1,Sv2は、それぞれ要求を受けると、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)を個別に端末装置10に返信する。
【0084】
通信部12は、受信した暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をセキュアチップ装置13に入力する。
【0085】
セキュアチップ装置13は、入力があると、入力内容を識別する(ST11)。入力内容が個別化された鍵情報Kに相当する暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)の場合(ST20)、制御部14が端末固有情報格納部15から端末固有情報KP1を読出す。
【0086】
制御部14は、この端末固有情報KP1及び入力された暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)を個別化解除部16に入力する。
【0087】
個別化解除部16は、端末固有情報KP1に基づいて、暗号化分散情報E(KP1,S)及び暗号化算出値E(KP1,S’)をそれぞれ復号し(て個別化を解除し)、分散情報S及び算出値S’を復元する(ST21)。なお、分散情報Sと算出値S’との組は秘密分散鍵情報S,S’と呼んでもよい。個別化解除部16は、分散情報S及び算出値S’からなる秘密分散鍵情報S,S’を制御部14に出力する。
【0088】
制御部14は、この秘密分散鍵情報S,S’を分散プログラム復元部17に入力する。分散プログラム復元部17は、秘密分散鍵情報S,S’における分散情報Sと算出値S’との排他的論理和を算出し、算出結果Cを得る。この算出結果Cは鍵情報及び鍵IDに相当するので、鍵情報K及び鍵IDが復元される(ST22)。分散プログラム復元部17は、鍵情報K及び鍵IDを制御部14に出力する。
【0089】
制御部14は、この鍵情報K及び鍵IDを互いに関連付けて鍵情報格納部18に格納する。しかる後、制御部14は、鍵IDのみをチップ13外部のプログラム実行部11に出力する(ST23)。
【0090】
プログラム実行部11は、鍵IDをメモリ11aに記憶させ、適宜、前述したセキュリティ処理などに使用する。
【0091】
上述したように本実施形態によれば、第1の実施形態の効果に加え、圧縮プログラムの場合と同様に、秘密分散され個別化された鍵情報を復元することができる。また、鍵情報を用いる任意のセキュリティ処理をセキュアチップ装置13内で実行することができる。
【0092】
なお、本実施形態は、鍵情報Kだけではなく、セキュアチップ装置13内部で動作するプログラム自体も鍵情報格納部18に格納し、格納したプログラムに基づきセキュリティ処理部19を実行してもよい。この場合、さらに高いセキュリティ性を実現できる。
【0093】
(第3の実施形態)
図3は本発明の第3の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【0094】
本実施形態は、第1の実施形態の変形例であり、排他的論理和を用いた秘密分散に代えて、乱数rによる分散鍵情報K’を用いており、具体的には分散用サーバ装置Sv0が、図1に示した圧縮部4、分散情報生成部5、秘密分散部6及び個別化部7に代えて、乱数生成部21、分散鍵情報生成部22、個別化鍵生成部23及び個別化部24を備えている。これに伴い、送信部8、各サーバ装置Sv1,Sv2及び端末装置30は、扱う対象データが異なるものとなっている。以下、順に説明する。
【0095】
ここで、乱数生成部21は、保護対象記憶部1内のプログラムCを秘密分散する際に、予め乱数rを生成し、得られた乱数rを分散鍵情報生成部22に送出する機能をもっている。なお、以下の各実施形態では排他的論理和を用いないので、保護対象記憶部1内のプログラムCは圧縮プログラム又は解凍後のプログラムのいずれでもよい。
【0096】
分散鍵情報生成部22は、乱数生成部21により生成された乱数rに基づいて分散鍵情報K’(=g mod p)を生成する機能と、得られた分散鍵情報K’を個別化鍵部23及び送信部8に送出する機能とをもっている。ここで、gは乗法群の原始元であり、pは大きな素数であって、予め分散鍵情報生成部22に設定されている。
【0097】
個別化鍵生成部23は、分散鍵情報生成部22から受けた分散鍵情報K’から端末固有情報記憶部2内の端末固有情報KP1に基づいて、個別化鍵情報K(=(gP1 mod p)を生成する機能と、得られた個別化鍵情報Kを個別化部24に送出する機能とをもっている。
【0098】
個別化部24は、個別化鍵生成部23から受けた個別化鍵情報K及び共通鍵暗号方式に基づいた暗号処理により、保護対象記憶部1内のプログラムCを暗号化する機能と、得られた暗号化プログラムE(K,C)を送信部8に送出する機能とをもっている。
【0099】
送信部8は、分散鍵情報生成部22により得られた分散鍵情報K’(=g mod p)を第1サーバ装置Sv1に送信する機能と、個別化部24により得られた暗号化プログラムE(K,C)を第2サーバ装置Sv2に送信する機能とをもっている。
【0100】
第1サーバ装置Sv1は、分散用サーバ装置Sv0から受けた分散鍵情報K’をメモリに記憶する機能と、端末装置10からの要求に基づいて、メモリ内の分散鍵情報K’を端末装置10に送信する機能とをもっている。
【0101】
第2サーバ装置Sv2は、分散用サーバ装置Sv0から受けた暗号化プログラムE(K,C)をメモリに記憶する機能と、端末装置10からの要求に基づいて、メモリ内の暗号化プログラムE(K,C)を端末装置10に送信する機能とをもっている。
【0102】
端末装置30は、端末固有情報KP1を有して共通鍵暗号方式を実行可能なセキュアチップ装置(図示せず)を内蔵した計算機である。
【0103】
ここで、端末装置30内のセキュアチップ装置は、例えばシングルチップ形式の耐タンパー性ハードウェアからなり、入力された分散鍵情報K’及び暗号化プログラムE(K,C)から端末固有情報KP1及び共通鍵暗号方式に基づいた復号処理によりプログラムCを復元する機能と、得られたプログラムCを端末装置30内に送出する機能とをもっている。
【0104】
また、端末装置30は、第1サーバ装置Sv1に分散鍵情報K’を要求する機能と、第2サーバ装置Sv2に暗号化プログラムE(K,C)を要求する機能と、各サーバSv1,Sv2から受けた分散鍵情報K’及び暗号化プログラムE(K,C)をセキュアチップ装置に入力する機能と、セキュアチップ装置により得られたプログラムCを実行して実行終了後に当該プログラムを削除する機能とをもっている。
【0105】
次に、以上のように構成された秘密分散システムの動作を図6のフローチャートを用いて説明する。
分散用サーバ装置Sv0では、入力部3が、鍵情報及び/又はプログラム等といった保護対象を保護対象記憶部1に書込む。このプログラムを秘密分散する際には、乱数生成部21は、乱数rを生成し(ST31)、得られた乱数rを分散鍵情報生成部22に送出する。
【0106】
分散鍵情報生成部22は、この乱数rに基づいて分散鍵情報K’(=g mod p)を生成し(ST32)、得られた分散鍵情報K’を個別化鍵部23及び送信部8に送出する。
【0107】
個別化鍵生成部23は、この分散鍵情報K’から端末固有情報記憶部2内の端末固有情報KP1に基づいて、個別化鍵情報K(=(gP1 mod p)を生成し(ST33)、得られた個別化鍵情報Kを個別化部24に送出する。
【0108】
個別化部24は、この個別化鍵情報K及び共通鍵暗号方式に基づいた暗号処理により、保護対象記憶部1内のプログラムCを暗号化して個別化し(ST34)、得られた暗号化プログラムE(K,C)を送信部8に送出する。なお、この個別化により、端末固有情報KP1が無い場合には元のプログラムを正しく復元することができない。また秘密分散により、端末固有情報KP1があったとしても、暗号化プログラムE(K,C)と分散鍵情報K’との一方だけからでは元のプログラムを復元できない。
【0109】
送信部8は、分散鍵情報K’(=g mod p)を第1サーバ装置Sv1に送信する一方、暗号化プログラムE(K,C)を第2サーバ装置Sv2に送信する。
【0110】
第1サーバ装置Sv1は、分散鍵情報K’をメモリに記憶する。第2サーバ装置Sv2は、暗号化プログラムE(K,C)をメモリに記憶する。これにより、プログラムの秘密分散が完了する。
【0111】
続いて、端末装置30が秘密分散されたプログラムを復元する動作について述べる。
【0112】
端末装置30は、図示しないユーザの操作等により、第1サーバ装置Sv1に分散鍵情報K’を要求すると共に、第2サーバ装置Sv2に暗号化プログラムE(K,C)を要求する。
【0113】
第1サーバ装置Sv1は、この要求に基づいて、メモリ内の分散鍵情報K’を端末装置30に送信する。同様に、第2サーバ装置Sv2は、この要求に基づいて、メモリ内の暗号化プログラムE(K,C)を端末装置30に送信する。
【0114】
端末装置30は、これら分散鍵情報K’及び暗号化プログラムE(K,C)を図示しないセキュアチップ装置に入力する。
【0115】
セキュアチップ装置は、分散鍵情報K’及び暗号化プログラムE(K,C)が入力されると、分散鍵情報K’(=g mod p)及び端末固有情報KP1に基づいて、個別化鍵K(=(gP1 mod p)を復元する。
【0116】
続いて、セキュアチップ装置は、得られた個別化鍵K及び共通鍵暗号方式に基づいた復号処理により暗号化プログラムE(K,C)からプログラムCを復元し、得られたプログラムCを端末装置30内に送出する。
【0117】
端末装置30は、セキュアチップ装置により得られたプログラムCを実行し、実行終了後、当該プログラムCを削除する。
【0118】
上述したように本実施形態によれば、乱数rにより生成された分散鍵情報K’から端末固有情報KP1に基づいて生成された個別化鍵情報Kに基づいてプログラムCが暗号化されてなる暗号化プログラムE(K,C)と、分散鍵情報K’とを各サーバ装置Sv1,Sv2に秘密分散し、プログラム処理時に、端末装置30内のセキュアチップ装置(情報プログラム保護装置)がこれら暗号化プログラムE(K,C)及び分散鍵情報K’からプログラムCを復元するので、端末装置30内のセキュアチップ装置が保持する秘密情報(鍵情報)やプログラムのセキュリティ性を向上することができる。
【0119】
また、第1の実施形態と同様に、セキュアチップ装置は、復元したプログラムを実行せずに端末装置30内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、暗号化プログラム及び分散鍵情報を用いる構成により、秘密分散法を用いた際に、分散情報の個数を抑制することができる。
【0120】
なお、本実施形態は、分散鍵情報K’に代えて乱数rを第1サーバ装置Sv1に記憶させ、端末固有情報をgP1 mod pとして、個別化鍵KをK=(gP1) mod pとして算出する構成に変形しても、同様の作用効果を得ることができる。
【0121】
(第4の実施形態)
図7は本発明の第4の実施形態に係る情報プログラム保護装置が適用されるセキュアチップ装置を備えた端末装置及びその周辺構成を示す模式図である。
【0122】
本実施形態は、第3の実施形態の具体例であり、端末装置30の構成が具体的に述べられている。
【0123】
ここで、端末装置30は、プログラム実行部11、メモリ11a、通信部31及びセキュアチップ装置32を備えている。セキュアチップ装置32は、具体的には、制御部33、端末固有情報格納部15、個別化鍵復元処理部34、個別化処理部35、鍵情報格納部18及びセキュリティ処理部19を備えている。
【0124】
プログラム実行部11は、プログラム(又は鍵情報)を入手するため、通信部32を介して第1及び第2サーバ装置Sv1,Sv2にプログラム(又は鍵情報)を要求する機能と、セキュアチップ装置32から受けたプログラム(又は鍵ID)をメモリ11aに記憶させて実行する機能と、プログラムの実行終了後、メモリ11a内のプログラムをメモリ11aから削除する機能とをもっている。
【0125】
プログラム実行部11は、前述した通り、プログラムの実行中、必要により、セキュリティ処理要求をセキュアチップ装置32に入力する機能と、得られた実行結果P(K,D)を用い、現在実行中のプログラムの実行を継続する機能とをもっている。
【0126】
メモリ11aは、前述同様に、プログラム実行部11から読出/書込可能な記憶部である。
【0127】
通信部31は、プログラム実行部11から受けた要求を第1及び第2サーバ装置Sv1,Sv2に送信する機能と、第1及び第2サーバ装置Sv1,Sv2から受けた分散鍵情報K’及び暗号化プログラムE(K,C)をセキュアチップ装置32に入力する機能とをもっている。なお、分散鍵情報K’及び暗号化プログラムE(K,C)は、前述同様に通信部31からプログラム実行部11を介してセキュアチップ装置32に入力してもよい。
【0128】
セキュアチップ装置32は、端末装置30に内蔵されたシングルチップ形式の耐タンパー性ハードウェアからなり、通信部32から分散鍵情報K’及び暗号化プログラムE(K,C)が入力されると、以下の各部33〜35,15により、復元されたプログラムC又は鍵IDをプログラム実行部11に出力する機能と、プログラム実行部11からセキュリティ処理要求(処理ID,鍵ID,データD)が入力されると、以下の各部33,18,19により、セキュリティ処理の実行結果P(K,D)をプログラム実行部11に出力する機能をもっている。
【0129】
ここで、セキュリティ処理は、前述した通り、例えば暗号化処理、復号処理、署名生成処理、認証子の生成処理、又は認証子の検証処理などが使用可能となっている。なお、データDはセキュリティ処理要求から省略可能なことも前述した通りである。
【0130】
制御部33は、入力内容に応じ、復元されたプログラムC、鍵ID、又は実行結果P(K,D)を得るように、各部34〜35,15,18〜19を制御する機能と、得られた結果をプログラム実行部11に出力する機能とをもっている。なお、端末固有情報格納部15、鍵情報格納部18及びセキュリティ処理部19は、前述同様のものである。
【0131】
個別化鍵復元処理部34は、制御部33から入力された端末固有情報KP1及び分散鍵情報K’(=g mod p)に基づいて、個別化鍵K(=(gP1 mod p)=)を算出し、得られた個別化鍵情報Kを制御部33に送出する機能をもっている。
【0132】
個別化処理部35は、制御部33から個別化鍵情報K及び暗号化プログラムE(K,C)が入力されると、個別化鍵情報Kに基づいて暗号化プログラムE(K,C)を復号し(て個別化を解除し)、プログラムCを復元する機能と、得られたプログラムCを制御部33に出力する機能とをもっている。
【0133】
次に、以上のように構成された端末装置の動作を図4のフローチャートを用いて説明する。
(プログラムの復元)
いま、第3の実施形態と同様に、プログラムCを秘密分散及び個別化してなる分散鍵情報K’及び暗号化プログラムE(K,C)が、それぞれ第1及び第2サーバ装置Sv1,Sv2に記憶されているとする。
【0134】
一方、端末装置30においては、前述同様に、第1及び第2サーバ装置Sv1,Sv2にプログラムを要求し、各サーバ装置Sv1,Sv2から受けた分散鍵情報K’及び暗号化プログラムE(K,C)をセキュアチップ装置32に入力する。
【0135】
セキュアチップ装置32は、入力があると、入力内容を識別する(ST41)。入力内容が個別化されたプログラムに相当する分散鍵情報K’及び暗号化プログラムE(K,C’)の場合(ST42)、制御部33が端末固有情報格納部15から端末固有情報KP1を読出す。
【0136】
制御部33は、この端末固有情報KP1及び分散鍵情報K’を個別化鍵復元処理部34に入力する。
【0137】
個別化鍵復元処理部34は、この端末固有情報KP1及び分散鍵情報K’(=g mod p)に基づいて、個別化鍵K(=(gP1 mod p)=)を復元し(ST43)、得られた個別化鍵情報Kを制御部33に送出する。
【0138】
制御部33は、この個別化鍵情報K及び暗号化プログラムE(K,C)を個別化処理部35に入力する。
【0139】
個別化処理部35は、この個別化鍵情報Kに基づいて暗号化プログラムE(K,C)を復号し(て個別化を解除し)、プログラムCを復元する(ST44)。また、個別化処理部35は、得られたプログラムCを制御部33に出力する。
【0140】
制御部14は、このプログラムCをチップ32外部のプログラム実行部11に出力する(ST45)。
【0141】
プログラム実行部11は、得られたプログラムをメモリ11aに記憶させて実行する。プログラムの実行終了後、プログラム実行部11は、メモリ11a内のプログラムをメモリ11aから削除し、処理を終了する。
【0142】
(セキュリティ処理の実行)
セキュリティ処理は、第2の実施形態と同様に実行される。
(鍵情報の復元)
鍵情報の復元処理は、前述したプログラムCに代えて、鍵情報Kcが秘密分散され個別化された場合に当該鍵情報Kcを復元する内容である。以下、順次説明する。
【0143】
いま、前述同様に、鍵情報Kcを秘密分散及び個別化してなる秘密分散及び個別化してなる分散鍵情報K’及び暗号化鍵情報E(K,Kc)が、それぞれ第1及び第2サーバ装置Sv1,Sv2に記憶されているとする。
【0144】
一方、端末装置30においては、図示しない外部操作等により、鍵情報Kcの入手がプログラム実行部11に要求される。プログラム実行部11は、鍵情報Kcを入手するため、通信部12を介して第1及び第2サーバ装置Sv1,Sv2に鍵情報Kcを要求し、各サーバ装置Sv1,Sv2から受けた分散鍵情報K’及び暗号化鍵情報E(K,Kc)をセキュアチップ装置32に入力する。
【0145】
セキュアチップ装置32は、入力があると、入力内容を識別する(ST41)。入力内容が個別化された鍵情報Kcに相当する分散鍵情報K’及び暗号化鍵情報E(K,Kc)の場合(ST46)、制御部33が端末固有情報格納部15から端末固有情報KP1を読出す。
【0146】
制御部33は、この端末固有情報KP1及び分散鍵情報K’を個別化鍵復元処理部34に入力する。
【0147】
個別化鍵復元処理部34は、この端末固有情報KP1及び分散鍵情報K’(=g mod p)に基づいて、個別化鍵K(=(gP1 mod p)=)を復元し(ST47)、得られた個別化鍵情報Kを制御部33に送出する。
【0148】
制御部33は、この個別化鍵情報K及び暗号化鍵情報E(K,Kc)を個別化処理部35に入力する。
【0149】
個別化処理部35は、この個別化鍵情報Kに基づいて暗号化鍵情報E(K,Kc)を復号し(て個別化を解除し)、鍵情報Kc及び鍵IDを復元する(ST48)。また、個別化処理部35は、得られた鍵情報Kc及び鍵IDを制御部33に出力する。
【0150】
制御部33は、この鍵情報K及び鍵IDを互いに関連付けて鍵情報格納部18に格納する。しかる後、制御部33は、鍵IDのみをチップ32外部のプログラム実行部11に出力する(ST49)。
【0151】
プログラム実行部11は、鍵IDをメモリ11aに記憶させ、適宜、前述したセキュリティ処理などに使用する。
【0152】
上述したように本実施形態によれば、第3の実施形態の効果に加え、プログラムの場合と同様に、秘密分散され個別化された鍵情報を復元することができる。また、鍵情報を用いる任意のセキュリティ処理をセキュアチップ装置32内で実行することができる。
【0153】
なお、本実施形態は、鍵情報Kだけではなく、セキュアチップ装置32内部で動作するプログラム自体も鍵情報格納部18に格納し、格納したプログラムに基づきセキュリティ処理部19を実行してもよい。この場合、さらに高いセキュリティ性を実現できる。
【0154】
(第5の実施形態)
図9は本発明の第5の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【0155】
本実施形態は、第3の実施形態の変形例であり、乱数rによる秘密分散において、乱数r自体を分散情報S0,S1〜S3として分散するものであり、概略的には分散用サーバ装置Sv0が、図5に示した分散鍵情報生成部22を省略し、乱数rに関する分散情報生成部25を備えている。これに伴い、他の要素が若干異なるものとなっている。また、8台のサーバ装置Sv1〜Sv8に秘密分散するものとなっている。以下、順に説明する。
【0156】
ここで、乱数生成部21は、保護対象記憶部1内のプログラムCを秘密分散する際に、予め乱数rを生成し、得られた乱数rを個別化鍵生成部23及び分散情報生成部25に送出する機能をもっている。
【0157】
個別化鍵生成部23は、乱数生成部21から受けた乱数r及び端末固有情報記憶部2内の端末固有情報KP1に基づいて、個別化鍵情報K(=(gP1 mod p)を生成する機能と、得られた個別化鍵情報Kを個別化部24に送出する機能と、鍵生成用のパラメータgを送信部8に送出する機能とをもっている。ここで、gは乗法群の原始元であり、pは大きな素数であって、予め個別化鍵生成部23に設定されている。
【0158】
分散情報生成部25は、乱数生成部21から受けた乱数rを復元可能な第1分散情報S及び第2分散情報S〜Sを生成する機能と、得られた第1及び第2分散情報S,S〜Sを送信部8に送信する機能とをもっている。
【0159】
ここで、分散情報生成部25は、具体的には次のような機能(f1)〜(f5)を有している。
【0160】
[f1]n台のサーバ装置Sv1,…,Svnのうち、任意のk台のサーバ装置により分散情報を復元可能とするように(k,n)しきい値法により、乱数rの第1分散情報S={s,…,s}を生成する機能。なお、kは、後述する(L+1)に対応する。nは、後述するn’に対応する。すなわち、(k,n)しきい値法は、後述する(L+1,n’)しきい値法に対応する。
【0161】
[f2]第1分散情報Sに含まれる要素{s,…,s}を各サーバ装置Sv1,…,Svnに個別に割当てる機能。
【0162】
[f3]k台未満のサーバ装置からなり、k台未満のサーバ装置により乱数rを復元可能で且つ1台でもサーバ装置が減ると、乱数rが復元不可能となる旨のd個の極小グループA(但し、1≦i≦d)が設定される機能。
【0163】
[f4]極小グループA毎に(|A|,|A|)しきい値法により(但し|A|はAに属するサーバ装置の台数)、乱数rの第2分散情報S={s{i,1},…,s{i,|Ai|}}を生成する機能。
【0164】
[f5]極小グループA毎に、第2分散情報Sに含まれる要素{s{i,1},…,s{i,|Ai|}}を当該極小グループAに含まれる各サーバ装置に個別に割り当てる機能。
【0165】
送信部8は、分散情報生成部25により得られた分散情報S,S〜Sの所定の組合せを第1〜第6サーバ装置Sv1〜Sv8に送信する機能と、個別化鍵生成部24から受けた原始元gを第7サーバ装置Sv7に送信する機能と、個別化部24により得られた暗号化プログラムE(K,C)を第8サーバ装置Sv8に送信する機能とをもっている。
【0166】
第1〜第6サーバ装置Sv1〜Sv6は、分散用サーバ装置Sv0から受けた分散情報S,S〜Sの組合せをメモリに記憶する機能と、端末装置40からの要求に基づいて、メモリ内の分散情報S0,S1〜S3を端末装置40に送信する機能とをもっている。
【0167】
第7サーバ装置Sv7は、分散用サーバ装置Sv0から受けた原始元gをメモリに記憶する機能と、端末装置40からの要求に基づいて、メモリ内の原始元gを端末装置40に送信する機能とをもっている。
【0168】
第8サーバ装置Sv8は、分散用サーバ装置Sv0から受けた暗号化プログラムE(K,C)をメモリに記憶する機能と、端末装置40からの要求に基づいて、メモリ内の暗号化プログラムE(K,C)を端末装置40に送信する機能とをもっている。
【0169】
端末装置40は、端末固有情報KP1を有して共通鍵暗号方式を実行可能なセキュアチップ装置(図示せず)を内蔵した計算機である。
【0170】
ここで、端末装置40内のセキュアチップ装置は、例えばシングルチップ形式の耐タンパー性ハードウェアからなり、入力された分散情報S又はS〜S、原始元g及び暗号化プログラムE(K,C)から端末固有情報KP1及び共通鍵暗号方式に基づいた復号処理によりプログラムCを復元する機能と、得られたプログラムCを端末装置40内に送出する機能とをもっている。
【0171】
また、端末装置40は、第1〜第6サーバ装置Sv1〜Sv6に分散情報S,S〜Sを要求する機能と、第7サーバ装置Sv7に原始元gを要求する機能と、第8サーバ装置Sv8に暗号化プログラムE(K,C)を要求する機能と、各サーバ装置Sv1〜Sv8から受けた分散情報S又はS〜S、原始元g及び暗号化プログラムE(K,C)をセキュアチップ装置に入力する機能と、セキュアチップ装置により得られたプログラムCを実行して実行終了後に当該プログラムを削除する機能とをもっている。
【0172】
次に、以上のように構成された秘密分散システムの動作を図10のフローチャートを用いて説明する。
分散用サーバ装置Sv0では、プログラムCを秘密分散する際に、乱数生成部21が乱数rを生成し(ST31)、得られた乱数rを個別化鍵生成部23及び分散情報生成部25に送出する。
【0173】
個別化鍵生成部23は、この乱数r及び端末固有情報記憶部2内の端末固有情報KP1に基づいて、個別化鍵情報K(=(gP1 mod p)を生成し(ST33)、得られた個別化鍵情報Kを個別化部24に送出すると共に、原始元gを送信部8に送出する。
【0174】
個別化部24は、この個別化鍵情報K及び共通鍵暗号方式に基づいた暗号処理により、保護対象記憶部1内のプログラムCを暗号化して個別化し(ST34)、得られた暗号化プログラムE(K,C)を送信部8に送出する。なお、この個別化により、端末固有情報KP1が無い場合には元のプログラムを正しく復元することができない。また秘密分散により、端末固有情報KP1があったとしても、暗号化プログラムE(K,C)と、分散情報S0,S1〜S3との一方だけからでは元のプログラムを復元できない。
【0175】
分散情報生成部25は、乱数生成部21から乱数rを受けると、乱数rを復元可能な第1分散情報S及び第2分散情報S〜Sの生成を開始する(ST35)。
【0176】
ここで、乱数rの分散情報の生成に必要な秘密分散法について述べる。乱数rはいくつかの分散情報に秘密分散され、分散情報が各サーバ装置Sv1,…,Svnに割り当てられる。このとき、本実施形態の秘密分散法は、次の(a)〜(c)で表される。
【0177】
(a)任意の(L+1)台のサーバ装置のグループは、乱数rを復元でき、また、L台以下のサーバ装置からなる極小グループA,…,Aも乱数rを復元できる。なお、極小グループは、乱数rを復元可能なグループの中で、グループのサーバ装置のうち、一台でも欠けると乱数rを復元できないグループである。また、上記台数Lは、全ての極小グループに基づいて、定めることができる。
【0178】
(b)任意の(L+1)台のサーバ装置のグループの中で極小グループになっているグループに含まれるサーバ装置の集合をAとし、Aに含まれるサーバ装置の台数をn’とする。このとき、(L+1,n’)しきい値法により、乱数rに対する第1分散情報S={s,…,s’}を求め、Aに含まれるサーバ装置にSに含まれる分散情報の一つを重複なく割り当てる。
【0179】
(c)各極小グループA(1≦i≦d)に対し、(|A|,|A|)しきい値法により、乱数rに対する第2分散情報S={s{i,1},…,s{i,|Ai|}}を求め、Aに含まれるサーバ装置にSに含まれる分散情報の一つを重複なく割り当てる。
【0180】
本実施形態は、上記(a)〜(c)で表される秘密分散方法を用いるため、各サーバ装置Sv1〜Sv6に割り当てられる分散情報の数を減らすことが可能であり、実装上非常に有効である。例えば各サーバ装置Sv1,…,Sv6に関し、乱数rを復元することが可能な8つの極小グループU1〜U8を図11に示すように定めるとする。
【0181】
この場合、本実施形態の秘密分散方法では、L=3,n=n’=6、d=3となり、極小グループA,…,Aは図12に示すようになる。
【0182】
従って、この場合、各サーバ装置Sv1〜Sv6に割り当てられる分散情報の数は、図13に示すように、Sv1:3個、Sv2:3個、Sv3:3個、Sv4:3個、Sv5:1個、Sv6:1個となる。
【0183】
一方、従来手法(例えば、非特許文献2参照)では、全ての極小グループU1〜U8に(c)の処理を行う必要があるので、各サーバ装置Sv1〜Sv6に割り当てられる分散情報の数は、図14に示すように、Sv1:4個、Sv2:4個、Sv3:5個、Sv4:5個、Sv5:5個、Sv6:5個となる。
【0184】
このように、従来手法は、本実施形態よりも多数の分散情報を必要とするので、非効率なことが分かる。
【0185】
ここで、分散情報生成部25の動作説明に戻る。分散情報生成部25は、ステップST35の後、例えばユーザ等の外部操作により、図11に示すように、各サーバ装置Sv1〜Sv6の極小グループU1〜U8が設定される(ST36)。この極小グループU1〜U8は、上記(b),(c)及び図12に示すように、極小グループA0〜A3に分類される。
【0186】
続いて、分散情報生成部25は、(L+1,n’)しきい値法により、乱数rに対する第1分散情報S={s,…,s’}を生成し(ST37)、Aに含まれるサーバ装置にSに含まれる分散情報の一つを重複なく割り当てる。
【0187】
また、分散情報生成部25は、各極小グループA(1≦i≦d)に対し、(|A|,|A|)しきい値法により、乱数rに対する第2分散情報S={s{i,1},…,s{i,|Ai|}}を生成し(ST38)、Aに含まれるサーバ装置にSに含まれる分散情報の一つを重複なく割り当てる。
【0188】
しかる後、分散情報生成部25は、得られた第1及び第2分散情報S,S〜Sを送信部8に送信する。
【0189】
送信部8は、これら分散情報S,S〜Sの所定の組合せを第1〜第6サーバ装置Sv1〜Sv8に送信し、個別化鍵生成部24から受けた原始元gを第7サーバ装置Sv7に送信し、個別化部24により得られた暗号化プログラムE(K,C)を第8サーバ装置Sv8に送信する。
【0190】
第1〜第6サーバ装置Sv1〜Sv6は、それぞれ受信した分散情報S,S〜Sの組合せをメモリに記憶する。第7サーバ装置Sv7は、受信した原始元gをメモリに記憶する。第8サーバ装置Sv8は、受信した暗号化プログラムE(K,C)をメモリに記憶する。これにより、プログラムの秘密分散が完了する。
【0191】
続いて、端末装置40が秘密分散されたプログラムを復元する動作について述べる。
【0192】
端末装置40は、図示しないユーザの操作等により、例えば図12に示すような極小グループAに属する第2〜第4サーバ装置Sv2〜Sv4に対し、図13に示すような第2分散情報Sを要求する。また、端末装置40は、第7及び第8サーバ装置Sv7,Sv8にも情報を要求する。なお、極小グループAに限らず、任意の極小グループA〜Aに分散情報を要求可能なことは言うまでもない。また、極小グループAの場合、任意の4台のサーバ装置Svを選択すればよい。
【0193】
さて第2〜第4サーバ装置Sv2〜Sv4は、この要求に基づいて、それぞれメモリ内の分散情報S{3,1},S{3,2},S{3,3}を端末装置40に送信する。第7サーバ装置Sv7は、この要求に基づいて、メモリ内の原始元gを端末装置40に送信する。第8サーバ装置Sv8は、この要求に基づいて、メモリ内の暗号化プログラムE(K,C)を端末装置40に送信する。
【0194】
端末装置30は、これら分散情報S(=S{3,1},S{3,2},S{3,3})、原始元g及び暗号化プログラムE(K,C)をセキュアチップ装置(図示せず)に入力する。
【0195】
セキュアチップ装置は、分散情報S、原始元g及び暗号化プログラムE(K,C)が入力されると、分散情報S(=S{3,1},S{3,2},S{3,3})から乱数rを復元する。また、セキュアチップ装置は、得られた乱数r及び原始元gから端末固有情報KP1に基づいて個別化鍵情報K(=(gP1 mod p)を算出する。しかる後、セキュアチップ装置は、個別化鍵情報K及び共通鍵暗号方式に基づいた復号処理によりプログラムCを復元し、得られたプログラムCを端末装置40内に送出する。
【0196】
端末装置30は、セキュアチップ装置により得られたプログラムCを実行し、実行終了後、当該プログラムCを削除する。
【0197】
上述したように本実施形態によれば、乱数r及び端末固有情報KP1に基づいて生成された個別化鍵情報Kに基づいてプログラムが暗号化されてなる暗号化プログラムE(K,C)と、乱数rを秘密分散した第1及び第2分散情報S,S〜Sとを各サーバ装置Sv1〜Sv8に秘密分散し、プログラム処理時に、端末装置40内のセキュアチップ装置(情報プログラム保護装置)がこれら暗号化プログラムE(K,C)及び分散情報(例、S)からプログラムCを復元するので、端末装置40内のセキュアチップ装置が保持する秘密情報(鍵情報)やプログラムのセキュリティ性を向上することができる。また、セキュアチップ装置は、復元したプログラムを実行せずに端末装置40内に出力するだけなので、従来とは異なりハードウェアの処理能力による制限が無く、任意のプログラムを実行することができる。また、秘密分散法を用いる際に、(k,n)しきい値法と(|Ai|,|Ai|)しきい値法を用いたので、(|Ai|,|Ai|)しきい値法のみを用いる場合に比べ、分散情報の個数を抑制することができる(図13及び図14参照)。
【0198】
(第6の実施形態)
図15は本発明の第6の実施形態に係る情報プログラム保護装置が適用されるセキュアチップ装置を備えた端末装置及びその周辺構成を示す模式図である。
【0199】
本実施形態は、第5の実施形態の具体例であり、端末装置40の構成が具体的に述べられている。
【0200】
ここで、端末装置40は、プログラム実行部11、メモリ11a、通信部41及びセキュアチップ装置42を備えている。セキュアチップ装置42は、具体的には、制御部43、端末固有情報格納部15、乱数復元部44、個別化鍵復元処理部45、個別化処理部35、鍵情報格納部18及びセキュリティ処理部19を備えている。
【0201】
プログラム実行部11は、プログラム(又は鍵情報)を入手するため、通信部41を介して第1〜第6サーバ装置Sv1〜Sv6の極小グループA又はA及び第7〜第8サーバ装置Sv7,Sv8にプログラム(又は鍵情報)を要求する機能と、セキュアチップ装置42から受けたプログラム(又は鍵ID)をメモリ11aに記憶させて実行する機能と、プログラムの実行終了後、メモリ11a内のプログラムをメモリ11aから削除する機能とをもっている。
【0202】
プログラム実行部11は、前述した通り、プログラムの実行中、必要により、セキュリティ処理要求をセキュアチップ装置42に入力する機能と、得られた実行結果P(K,D)を用い、現在実行中のプログラムの実行を継続する機能とをもっている。
【0203】
メモリ11aは、前述同様に、プログラム実行部11から読出/書込可能な記憶部である。
【0204】
通信部41は、プログラム実行部11から受けた要求を第1〜第6サーバ装置Sv1〜Sv6の極小グループA又はA及び第7〜第8サーバ装置Sv7,Sv8に送信する機能と、第1〜第8サーバ装置Sv1〜Sv8から受けた分散情報S0〜S3のいずれか、原始元g及び暗号化プログラムE(K,C)をセキュアチップ装置42に入力する機能とをもっている。なお、分散鍵情報K’及び暗号化プログラムE(K,C)は、前述同様に通信部31からプログラム実行部11を介してセキュアチップ装置42に入力してもよい。
【0205】
セキュアチップ装置42は、端末装置40に内蔵されたシングルチップ形式の耐タンパー性ハードウェアからなり、通信部41から分散鍵情報K’及び暗号化プログラムE(K,C)が入力されると、以下の各部43〜45,35,15により、復元されたプログラムC又は鍵IDをプログラム実行部11に出力する機能と、プログラム実行部11からセキュリティ処理要求(処理ID,鍵ID,データD)が入力されると、以下の各部43,18,19により、セキュリティ処理の実行結果P(K,D)をプログラム実行部11に出力する機能をもっている。
【0206】
制御部43は、入力内容に応じ、復元されたプログラムC、鍵ID、又は実行結果P(K,D)を得るように、各部44〜45,35,15,18〜19を制御する機能と、得られた結果をプログラム実行部11に出力する機能とをもっている。なお、端末固有情報格納部15、個別化処理部35、鍵情報格納部18及びセキュリティ処理部19は、前述同様のものである。
【0207】
乱数復元部44は、制御部33から入力された分散情報S〜Sのいずれかに基づいて乱数rを復元する機能と、得られた乱数rを制御部43に送出する機能とをもっている。
【0208】
個別化鍵復元処理部34は、制御部33から入力された乱数r、原始元g及び端末固有情報KP1に基づいて、個別化鍵K(=(gP1 mod p)=)を算出し、得られた個別化鍵情報Kを制御部43に送出する機能をもっている。
【0209】
次に、以上のように構成された端末装置の動作を図16のフローチャートを用いて説明する。
(プログラムの復元)
いま、第5の実施形態と同様に、プログラムCを秘密分散及び個別化してなる分散情報S0〜S3、原始元g及び暗号化プログラムE(K,C)が、それぞれ第1〜第8サーバ装置Sv1〜Sv8に記憶されているとする。
【0210】
一方、端末装置40においては、前述同様に、極小グループAに属する第2〜第4サーバ装置Sv2〜Sv4に対し、図13に示すような第2分散情報Sを要求する。また、端末装置40は、第7及び第8サーバ装置Sv7,Sv8にも情報を要求する。
【0211】
また、端末装置30は、各サーバ装置Sv2〜SV4,Sv7,Sv8から受けた分散情報S(=S{3,1},S{3,2},S{3,3})、原始元g及び暗号化プログラムE(K,C)をセキュアチップ装置42に入力する。
【0212】
セキュアチップ装置42は、入力があると、入力内容を識別する(ST41R)。入力内容が個別化されたプログラムに相当する分散情報S、原始元g及び暗号化プログラムE(K,C’)の場合(ST42R)、制御部43が分散情報Sを乱数復元部44に入力する。
【0213】
乱数復元部44は、この分散情報Sから乱数rを復元し(ST43R−1)、得られた乱数rを制御部43に出力する。
【0214】
制御部43は、この乱数r、原始元g及び端末固有情報KP1を個別化鍵復元処理部45に入力する。
【0215】
個別化鍵復元処理部45は、この乱数r、原始元g及び端末固有情報KP1に基づいて、個別化鍵K(=(gP1 mod p)=)を復元し(ST43R−2)、得られた個別化鍵情報Kを制御部43に送出する。
【0216】
制御部43は、この個別化鍵情報K及び暗号化プログラムE(K,C)を個別化処理部35に入力する。以下、前述同様にST44以降の処理が実行される。
【0217】
(セキュリティ処理の実行)
セキュリティ処理は、第2の実施形態と同様に実行される。
(鍵情報の復元)
鍵情報の復元処理は、前述したプログラムCに代えて、鍵情報Kcが秘密分散され個別化された場合に当該鍵情報Kcを復元する内容である。以下、順次説明する。
【0218】
いま、前述同様に、鍵情報Kcを秘密分散及び個別化してなる秘密分散及び個別化してなる分散情報S〜S、原始元g及び暗号化鍵情報E(K,Kc)が、それぞれ第1〜第8サーバ装置Sv1〜Sv8に記憶されているとする。
【0219】
一方、端末装置40においては、前述同様にして、各サーバ装置Sv2〜SV4,Sv7,Sv8から分散情報S(=S{3,1},S{3,2},S{3,3})、原始元g及び暗号化鍵情報E(K,Kc)を受けると、これらをセキュアチップ装置42に入力する。
【0220】
セキュアチップ装置42は、入力があると、入力内容を識別する(ST41R)。入力内容が個別化された鍵情報Kcに相当する分散情報S、原始元g及び暗号化鍵情報E(K,Kc)の場合(ST46R)、制御部43が分散情報Sを乱数復元部44に入力する。
【0221】
乱数復元部44は、この分散情報Sから乱数rを復元する(ST47R−1)。詳しくは、乱数復元部44は、次の(α)又は(β)のようにして乱数rを復元する。
【0222】
(α)入力された分散情報がSに含まれる分散情報であり、入力された個数が(L+1)個以上のとき、(L+1,n’)しきい値法によりrを復元する。
【0223】
(β)入力された分散情報がS(1≦i≦d)に含まれる分散情報であり、入力された個数が|A|個以上のとき、(|A|,|A|)しきい値法によりrを復元する。
【0224】
しかる後、乱数復元部44は得られた乱数rを制御部43に出力する。
【0225】
制御部43は、この乱数r、原始元g及び端末固有情報KP1を個別化鍵復元処理部45に入力する。
【0226】
個別化鍵復元処理部45は、この乱数r、原始元g及び端末固有情報KP1に基づいて、個別化鍵K(=(gP1 mod p)=)を復元し(ST47R−2)、得られた個別化鍵情報Kを制御部43に送出する。
【0227】
制御部43は、この個別化鍵情報K及び暗号化鍵情報E(K,Kc)を個別化処理部35に入力する。以下、前述同様にST48以降の処理が実行される。
【0228】
上述したように本実施形態によれば、第5の実施形態の効果に加え、プログラムの場合と同様に、秘密分散され個別化された鍵情報を復元することができる。また、鍵情報を用いる任意のセキュリティ処理をセキュアチップ装置42内で実行することができる。
【0229】
なお、本実施形態は、鍵情報Kだけではなく、セキュアチップ装置42内部で動作するプログラム自体も鍵情報格納部18に格納し、格納したプログラムに基づきセキュリティ処理部19を実行してもよい。この場合、さらに高いセキュリティ性を実現できる。
【0230】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0231】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0232】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行しても良い。
【0233】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
【0234】
また、記憶媒体は1つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0235】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0236】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0237】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【0238】
【図1】本発明の第1の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図2】同実施形態における動作を説明するためのフローチャートである。
【図3】本発明の第2の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図4】同実施形態における動作を説明するためのフローチャートである。
【図5】本発明の第3の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図6】同実施形態における動作を説明するためのフローチャートである。
【図7】本発明の第4の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図8】同実施形態における動作を説明するためのフローチャートである。
【図9】本発明の第5の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図10】同実施形態における動作を説明するためのフローチャートである。
【図11】同実施形態における極小グループを説明するための模式図である。
【図12】同実施形態における極小グループを説明するための模式図である。
【図13】同実施形態における分散情報の個数を説明するための模式図である。
【図14】従来手法による分散情報の個数を説明するための模式図である。
【図15】本発明の第6の実施形態に係る情報プログラム保護方法が適用される秘密分散システムの構成を示す模式図である。
【図16】同実施形態における動作を説明するためのフローチャートである。
【符号の説明】
【0239】
Sv0〜Sv8…サーバ装置、1…保護対象記憶部、2…端末固有情報記憶部、3…入力部、4…圧縮部、5…分散情報生成部、6…秘密分散部、7…個別化部、8…送信部、10〜40…端末装置、11…プログラム実行部、11a…メモリ、12,31,41…通信部、13,32,42…セキュアチップ装置、14,33,43…制御部、15…端末固有情報格納部、16…個別化解除部、17…分散プログラム復元部、18…鍵情報格納部、19…セキュリティ処理部、21…乱数生成部、22…分散鍵情報生成部、23…個別化鍵生成部、24…個別化部、25…分散情報生成部、34,45…個別化鍵復元処理部、35…個別化処理部、44…乱数生成部。

【特許請求の範囲】
【請求項1】
端末固有情報を有して共通鍵暗号方式、排他的論理和及び圧縮プログラム解凍を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、
前記各サーバ装置のうちの分散用サーバ装置が、0と1からなるバイナリ形式の前記プログラムに対し、前記0と1の偏りを少なくするように前記プログラムを圧縮し、圧縮プログラムを得る工程と、
前記分散用サーバ装置が当該圧縮プログラムのビット長を算出する工程と、
前記分散用サーバ装置が前記ビット長と同じビット長の乱数からなる分散情報を生成する工程と、
前記分散用サーバ装置が前記分散情報と前記圧縮プログラムとの各ビットの排他的論理和を算出し、算出値を得る工程と、
前記分散用サーバ装置が前記算出値を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化算出値を得る工程と、
前記分散用サーバ装置が前記分散情報を前記端末固有情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化分散情報を得る工程と、
前記分散用サーバ装置が前記暗号化分散情報及び暗号化算出値のうち、少なくとも一方を他のサーバ装置に送信する工程と
を備えたことを特徴とする情報プログラム保護方法。
【請求項2】
端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、
前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、
圧縮プログラムのビット長と同じビット長の乱数からなる分散情報が端末固有情報により暗号化されてなる暗号化分散情報が前記端末装置から入力される暗号化分散情報入力手段と、
前記分散情報と前記圧縮プログラムとの排他的論理和として算出された算出値が端末固有情報により暗号化されてなる暗号化算出値が前記端末装置から入力される暗号化算出値入力手段と、
前記入力された暗号化分散情報及び暗号化算出値から前記端末固有情報格納手段内の端末固有情報に基づいて、圧縮プログラムを復元するプログラム復元手段と、
前記復元された圧縮プログラムを前記端末装置内に出力する出力手段と、
鍵情報が格納される鍵情報格納手段と、
入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、
前記実行結果を前記端末装置内に出力する実行結果出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項3】
請求項2に記載の情報プログラム保護装置において、
前記プログラム復元手段は、
前記入力された暗号化分散情報を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、分散情報を得る分散情報復号手段と、
前記入力された暗号化算出値を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、算出値を得る算出値復号手段と、
前記復号された分散情報と前記復号された算出値との排他的論理和を算出し、圧縮プログラムを得る排他的論理和算出手段と、
を備えたことを特徴とする情報プログラム保護装置。
【請求項4】
請求項2に記載の情報プログラム保護装置において、
前記鍵格納手段は、鍵IDが前記鍵情報に関連付けて格納されており、
前記処理要求は、処理ID、鍵ID及びデータを含んでおり、
前記処理実行手段は、
前記入力された処理要求に含まれる鍵IDに基づいて、前記鍵情報格納部から鍵情報を読出す手段と、
前記読出した鍵情報、前記処理要求に含まれる処理ID及びデータに関し、前記処理IDで指定された処理を鍵情報に基づいてデータに実行し、前記実行結果を得る手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項5】
請求項2に記載の情報プログラム保護装置において、
鍵情報のビット長と同じビット長の乱数からなる分散鍵情報が端末固有情報により暗号化されてなる暗号化分散鍵情報が前記端末装置から入力される暗号化分散鍵情報入力手段と、
前記分散鍵情報と当該鍵情報との排他的論理和として算出された鍵用算出値が端末固有情報により暗号化されてなる暗号化鍵用算出値が前記端末装置から入力される暗号化鍵用算出値入力手段と、
前記入力された暗号化分散鍵情報を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、分散鍵情報を得る分散鍵情報復号手段と、
前記入力された暗号化鍵用算出値を前記端末固有情報格納手段内の端末固有情報に基づいて復号し、鍵用算出値を得る鍵用算出値復号手段と、
前記復号された分散鍵情報と前記復号された鍵用算出値との排他的論理和を算出し、鍵情報を復元する鍵情報復元手段と、
前記復元された鍵情報を対応する鍵IDと関連付けて前記鍵情報格納手段に書込む鍵書込手段と、
当該鍵IDを前記端末装置内に出力する鍵ID出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項6】
端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムを予め複数のサーバ装置に秘密分散する情報プログラム保護方法であって、
前記各サーバ装置のうちの分散用サーバ装置が乱数を生成する工程と、
前記分散用サーバ装置が前記乱数に基づいて分散鍵情報を生成する工程と、
前記分散用サーバ装置が前記分散鍵情報から前記端末固有情報に基づいて、個別化鍵情報を生成する工程と、
前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、
前記分散用サーバ装置が前記暗号化プログラム及び前記分散鍵情報のうち、少なくとも一方を他のサーバ装置に送信する工程と
を備えたことを特徴とする情報プログラム保護方法。
【請求項7】
端末装置に内蔵されたシングルチップ形式のハードウェアからなる情報プログラム保護装置であって、
前記端末装置に固有の端末固有情報が格納された端末固有情報格納手段と、
乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいてプログラムが暗号化されてなる暗号化プログラムが前記端末装置から入力される暗号化プログラム入力手段と、
前記分散鍵情報が前記端末装置から入力される分散鍵情報入力手段と、
前記入力された分散鍵情報及び暗号化プログラムから前記端末固有情報格納手段内の端末固有情報に基づいて、プログラムを復元するプログラム復元手段と、
前記復元されたプログラムを前記端末装置内に出力する出力手段と、
鍵情報が格納される鍵情報格納手段と、
入力された処理要求に基づいて、暗号化処理、復号処理、署名生成処理、認証子の生成処理及び認証子の検証処理のうち、いずれかの処理を前記鍵情報を用いて実行し、実行結果を得る処理実行手段と、
前記実行結果を前記端末装置内に出力する実行結果出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項8】
請求項7に記載の情報プログラム保護装置において、
前記プログラム復元手段は、
前記入力された分散鍵情報から前記端末固有情報格納手段内の端末固有情報に基づいて、個別化鍵情報を生成する個別化鍵情報生成手段と、
前記入力された暗号化プログラムを前記個別化鍵情報に基づいて復号し、プログラムを得るプログラム復号手段と、
を備えたことを特徴とする情報プログラム保護装置。
【請求項9】
請求項7に記載の情報プログラム保護装置において、
前記鍵格納手段は、鍵IDが前記鍵情報に関連付けて格納されており、
前記処理要求は、処理ID、鍵ID及びデータを含んでおり、
前記処理実行手段は、
前記入力された処理要求に含まれる鍵IDに基づいて、前記鍵情報格納部から鍵情報を読出す手段と、
前記読出した鍵情報、前記処理要求に含まれる処理ID及びデータに関し、前記処理IDで指定された処理を鍵情報に基づいてデータに実行し、前記実行結果を得る手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項10】
請求項7に記載の情報プログラム保護装置において、
乱数により生成された分散鍵情報から端末固有情報に基づいて生成された個別化鍵情報に基づいて鍵情報が暗号化されてなる暗号化鍵情報が前記端末装置から入力される暗号化鍵情報入力手段と、
前記分散鍵情報が前記端末装置から入力される分散鍵情報入力手段と、
前記入力された分散鍵情報から前記端末固有情報格納手段内の端末固有情報に基づいて、個別化鍵情報を生成する個別化鍵情報生成手段と、
前記入力された暗号化鍵情報を前記個別化鍵情報に基づいて復号し、鍵情報を復元する鍵情報復元手段と、
前記復元された鍵情報を対応する鍵IDと関連付けて前記鍵情報格納手段に書込む鍵書込手段と、
当該鍵IDを前記端末装置内に出力する鍵ID出力手段と
を備えたことを特徴とする情報プログラム保護装置。
【請求項11】
端末固有情報を有して共通鍵暗号方式を実行可能な端末装置に格納された秘密情報と前記秘密情報を処理するプログラムとを不正な利用又は解析から保護するように、前記プログラムの秘密分散に用いる乱数及び当該プログラムを少なくともn台のサーバ装置に秘密分散する情報プログラム保護方法であって、
前記各サーバ装置のうちの分散用サーバ装置が乱数rを生成する工程と、
前記分散用サーバ装置が前記乱数及び端末固有情報に基づいて、個別化鍵情報を生成する工程と、
前記分散用サーバ装置が前記プログラムを前記個別化鍵情報及び前記共通鍵暗号方式に基づいた暗号処理により暗号化し、暗号化プログラムを得る工程と、
前記分散用サーバ装置が、前記乱数rを復元可能なn台以下のサーバ装置のグループの中で、一台でも欠けると乱数rが復元不可能となるグループである極小グループに基づいて、任意の(L+1)台のサーバ装置のグループでは乱数rを復元可能となる旨の最小の台数Lを定める工程と、
L台以下のサーバ装置からなり、前記L台以下のサーバ装置により乱数rを復元可能で且つ1台でもサーバ装置が減ると、乱数rが復元不可能となる旨のd個の極小グループA(但し、1≦i≦d)を前記分散用サーバ装置に設定する工程と、
任意の(L+1)台のサーバ装置のグループの中の極小グループに含まれるサーバ装置の集合をAとし、集合Aに含まれるサーバ装置の台数n’を求め、(L+1,n’)しきい値法により、乱数rに対する第1分散情報S={s,…,s’}を生成する工程と、
前記集合Aに含まれるサーバ装置に対し、前記第1分散情報Sに含まれる要素{s,…,s’}を重複なく割り当てる工程と、
前記分散用サーバ装置が、前記極小グループA毎に(|A|,|A|)しきい値法により(但し|A|はAに属するサーバ装置の台数)、前記乱数rの第2分散情報S={s{i,1},…,s{i,|Ai|}}を生成する工程と、
前記分散用サーバ装置が、前記極小グループA毎に、前記第2分散情報Sに含まれる要素{s{i,1},…,s{i,|Ai|}}を当該極小グループAに含まれる各サーバ装置に個別に割り当てる工程と
を備えたことを特徴とする情報プログラム保護方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2006−99697(P2006−99697A)
【公開日】平成18年4月13日(2006.4.13)
【国際特許分類】
【出願番号】特願2004−288150(P2004−288150)
【出願日】平成16年9月30日(2004.9.30)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】