(57)【要約】【課題】  システムのメモリの管理方法に依存せずに高い暗号強度を得ることができるようにする。【解決手段】  任意の暗号鍵の有効期限がきれると、再暗号化手段５７により、有効期限がきれた暗号鍵により暗号化された暗号データを再暗号化対象データとした、再暗号化対象データの再暗号化指令を出力される。すると、再暗号化対象データの属性に対応させる暗号鍵が変更され、変更後の暗号鍵が生成される。また、再暗号化対象データの属性に応じた復号鍵が生成され、再暗号化対象データの全てが復号された時点で、再暗号化対象データの属性に対応させる復号鍵が変更される。次に、復号手段５４ａにより、再暗号化対象データが復号鍵を用いて復号され、暗号化手段５３ａに渡される。そして、暗号化手段５３ａにより、変更後の暗号鍵を用いて、再暗号化対象データが暗号化される。【選択図】  図６
2005094790.tif 000002
【特許請求の範囲】
【請求項１】
命令およびデータの暗号化と復号とを行いながら動作するソフトウェアの保護機能付き情報処理装置において、
暗号鍵で暗号化された暗号データを格納する記憶手段と、
暗号鍵の有効期限を管理しており、任意の暗号鍵の有効期限がきれると、前記有効期限がきれた暗号鍵により暗号化された暗号データを再暗号化対象データとして、再暗号化指令を出力する再暗号化指令手段と、
前記再暗号化指令が出力されると、再暗号化対象データの属性に応じた復号鍵を生成し、再暗号化対象データの全てが復号された時点で、再暗号化対象データの属性に対応させる復号鍵を変更する復号鍵生成手段と、
前記再暗号化指令が出力されると、再暗号化対象データとして指定された暗号データを前記記憶手段から取得し、前記復号鍵生成手段が生成した復号鍵を用いて復号する復号手段と、
前記再暗号化指令が出力されると、再暗号化対象データの属性に対応させる暗号鍵を変更し、変更後の暗号鍵を生成する暗号鍵生成手段と、
前記再暗号化指令が出力されると、前記復号手段で復号された再暗号化対象データを受け取り、前記暗号鍵生成手段で生成された変更後の暗号鍵を用いて再暗号化対象データを暗号化し、前記記憶手段に格納する暗号化手段と、
を有することを特徴とするソフトウェアの保護機能付き情報処理装置。
【請求項２】
前記再暗号化指令手段は、複数の暗号鍵の有効期限を個別に管理していることを特徴とする請求項１記載のソフトウェアの保護機能付き情報処理装置。
【請求項３】
属性に対する暗号鍵および復号鍵の対応関係が登録された鍵管理テーブルを更に有し、
前記復号鍵生成手段は、前記鍵管理テーブルにおいて再暗号化対象データの属性に対応付けられた鍵を復号鍵とし、前記鍵管理テーブルにおける属性と復号鍵との対応関係を変更することで、再暗号化対象データの属性に対応させる復号鍵を変更し、
前記暗号鍵生成手段は、前記鍵管理テーブルにおいて再暗号化対象データの属性に対応付けられた鍵を復号鍵とし、前記鍵管理テーブルにおける属性と暗号鍵との対応関係を変更することで、再暗号化対象データの属性に対応させる暗号鍵を変更することを特徴とする請求項１記載のソフトウェアの保護機能付き情報処理装置。
【請求項４】
前記鍵管理テーブルには、暗号データの格納先の前記記憶手段内のアドレスが、属性として登録されており、
前記再暗号化手段は、前記鍵管理テーブルを参照して、有効期限がきれた暗号鍵に対応するアドレスに格納された暗号データを、再暗号化対象データとすることを特徴とする請求項３記載のソフトウェアの保護機能付き情報処理装置。
【請求項５】
前記記憶手段は、ページ方式の仮想記憶方式により記憶空間が管理されており、
前記鍵管理テーブルには、仮想アドレス上のページ番号が属性として登録されており、
前記再暗号化手段は、前記鍵管理テーブルを参照して、有効期限がきれた暗号鍵に対応するページ番号に対応するページ内の暗号データを、再暗号化対象データとすることを特徴とする請求項３記載のソフトウェアの保護機能付き情報処理装置。
【請求項６】
命令およびデータの暗号化と復号とを行いながら動作するソフトウェアの保護機能付き情報処理方法において、
記憶手段が、暗号鍵で暗号化された暗号データを格納し、
再暗号化指令手段が、暗号鍵の有効期限を管理しており、任意の暗号鍵の有効期限がきれると、前記有効期限がきれた暗号鍵により暗号化された暗号データを再暗号化対象データとして、再暗号化指令を出力し、
復号鍵生成手段が、前記再暗号化指令が出力されると、再暗号化対象データの属性に応じた復号鍵を生成し、再暗号化対象データの全てが復号された時点で、再暗号化対象データの属性に対応させる復号鍵を変更し、
復号手段が、前記再暗号化指令が出力されると、再暗号化対象データとして指定された暗号データを前記記憶手段から取得し、前記復号鍵生成手段が生成した復号鍵を用いて復号し、
暗号鍵生成手段が、前記再暗号化指令が出力されると、再暗号化対象データの属性に対応させる暗号鍵を変更し、変更後の暗号鍵を生成し、
暗号化手段が、前記再暗号化指令が出力されると、前記復号手段で復号された再暗号化対象データを受け取り、前記暗号鍵生成手段で生成された変更後の暗号鍵を用いて再暗号化対象データを暗号化し、前記記憶手段に格納する、
ことを特徴とするソフトウェアの保護機能付き情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ等で取り扱うプログラム及びデータを盗用や改ざん及び不正使用から保護するソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法に関し、特に汎用性の高いソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法に関する。
【背景技術】
【０００２】
作成したプログラムやデータ（以下、特にことわりのない限りプログラムとデータとを含めて単に「データ」と呼ぶ）を流通させる場合、データを盗用や改ざんあるいは不正使用から保護する必要がある。これまで保護手段としては、データをロム化したり、フロッピー（登録商標）等に記憶しコピープロテクトをかける等の方法がとられてきた。しかし、このような方法ではデータの内容を読み出そうと思えば容易に読み出すことが可能であるためデータはほとんど保護されていない。
【０００３】
また、他のデータの保護方法としてデータを暗号化して供給し、復号鍵を持ったユーザのみがデータを復号して使用できるようにする技術がある。この方法では、復号された後のデータがメモリや固定ディスク装置などに蓄えられるため、盗用や改ざん及び不正使用の危険を払拭することはできない。
【０００４】
これらを解決する技術として、復号された後のデータを不正に入手できないようにするために、データを暗号化してメモリ等に格納しておき、それを中央処理装置で実行する時に復号する方式が、特開平２−１５５０３４号の「セキュリティ機能付き情報処理装置」に示されている。この方式では、データを保護するために、情報処理装置内部に暗号化装置と復号装置とが設けられており、これにより、ソフトウェアの保護を図っている。以下に、このような情報処理装置について具体的に説明する。
【０００５】
図３２は従来のソフトウェアの保護を図った情報処理装置のブロック図である。図３２に示した情報処理装置は、中央処理装置２１０、記憶装置２４０、入力装置２２０、出力装置２３０、及び鍵入力装置２５０を備えている。さらに、中央処理装置２１０は、内部に演算部２１２、制御部２１１、暗号化・復号部２１３、及び鍵格納部２１４を備えている。
【０００６】
中央処理装置２１０は、情報処理装置の中心部分として機能し、データの演算や他の装置の制御等を行う。記憶装置２４０は、データが格納される装置であり、中央処理装置２１０からの制御によって中央処理装置２１０内の暗号化・復号部２１３とデータの授受を行う。
【０００７】
入力装置２２０は、中央処理装置２１０からの制御で情報処理装置の外部からのデータを受け取る。出力装置２３０は、中央処理装置２１０からの制御で情報処理装置のデータを外部に出力する。鍵入力装置２５０は、中央処理装置２１０の暗号化や復号を行うのに必要な鍵をセットする。記憶装置２４０は、データが格納される装置であり、中央処理装置２１０からの制御によって中央処理装置２１０内の暗号化・復号部２１３とデータの授受を行う。
【０００８】
中央処理装置２１０内の演算部２１２は入力装置２２０や記憶装置２４０から与えられたデータに対して算術演算や論理演算を行う。制御部２１１は記憶装置２４０からの命令を解釈し情報処理装置全体の制御を行う。鍵格納部２１４は、鍵入力装置２５０がセットした鍵を格納する。暗号化・復号部２１３は記憶装置２４０と演算部２１２との間にあり、暗号化されている記憶装置２４０上の命令及びデータを、鍵格納部２１４内の鍵を用いて演算部２１２が解釈できるように復号するとともに、演算部２１２で演算された結果を記憶装置２４０に書き込む際に、鍵格納部２１４内の鍵を用いて暗号化し記憶装置２４０に格納する。
【０００９】
このような構成により、記憶装置２４０に格納されるデータを常に暗号化しておくことができる。そのため、記憶装置２４０内のデータを盗用してもその内容を解釈することは困難となり、データの秘匿性を高めることができる。
【００１０】
ところで、この様なソフトウェアの保護機能が付いた情報処理装置においては、暗号化して格納されたデータを実行時に逐次復号して実行しなければならない。そのため、復号する際のオーバーヘッドを考慮して計算量が少ない比較的簡単なアルゴリズムの暗号化方式（例えばＸＯＲ等）を用いなければならず、結果として暗号強度が低くなるという問題がある。従って、比較的簡単なアルゴリズムの暗号化方式でも暗号強度を出来るだけ高める必要がある。
【００１１】
そのため、情報処理装置ごとに暗号化の方法を変えて非公開にする努力がなされている。ただし、このような方法を用いるとデータの互換性が大きく失われてしまうという新たな問題が発生する。しかも、プログラム内の命令コードの出現頻度や暗号化されたプログラムと装置の動作の対応などから、暗号化アルゴリズムや暗号鍵が類推できるので、装置単位で見ると必ずしも暗号強度が高くなったとは言えない。
【００１２】
そこで、少ない計算量で高い暗号強度を得られるような、他の手法がいくつか考えられている。例えば、プロセスまたはセグメント毎に暗号鍵を設定する情報処理装置がある（特許文献１参照）。
【００１３】
この例は、図３２の例と同様にデータを暗号化しメモリ等に格納しておきそれを中央処理装置で実行する時に復号するのに加えて、プロセスまたはセグメント毎に変換（暗号復号）回路を選択する選択回路を有している。選択回路は一般の暗号化されていないプログラムやユーザが作成したプログラムを実行する際に、中央処理装置が変換回路を介さずにプログラムを実行するように構成されている。これにより、オペレーションシステムが管理する論理単位であるプロセスまたはセグメント毎に異なる暗号鍵を使用することができ、暗号鍵の管理をオペレーションシステムで、フレキシブルに行うので暗号強度が高くなる。
【００１４】
また、近年の情報処理装置とくにマイクロプロセッサでは、キャッシュ・メモリの使用が広く行われている。そこで、上記の変換回路をキャッシュ・メモリと実メモリの間に配置して、復号されたプログラムやデータをキャッシュ・メモリ内に保持することにより、キャッシュ・メモリを効率よく使用し、暗号化／復号の処理を高速に行うことができる。
【特許文献１】特開平４−１０２９２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかし、上記に示したプロセスまたはセグメント毎に暗号鍵を設定する情報処理装置では、選択回路の制御を論理単位であるプロセスまたはセグメント毎に行うために、選択回路の制御はプロセスまたはセグメントを管理しているオペレーション・システム（以下ＯＳと呼ぶ）で行わなければならない。一般にＯＳはソフトウェアであるので、特に比較的簡単なアルゴリズムの暗号化方式を用いるこのようなシステムでは、ＯＳの暗号切り替え制御部分を集中して解読することにより、容易に改ざん可能である。その結果、一旦装置内部で復号したデータをそのまま外部に出力するような改ざんが可能であり、ＯＳの一部を改ざんしただけで、すべてのプログラムやデータが解読されてしまうという問題点がある。つまり、ソフトウェアによる暗号化／復号手段の制御は装置におけるセキュリティ上の弱点になる。
【００１６】
また、ＯＳで選択回路を制御し、かつ処理の高速化を図るために、復号されたデータをキャッシュ・メモリ内に保持しようとした場合、次のような問題点を伴う。
キャッシュ・メモリ制御方法には大きく分けて、キャッシュ・メモリ内のデータを書き換えるタイミングと実メモリのデータを書き換えるタイミングが一致しているライト・スルー方式と、タイミングが一致していないライト・バック方式がある。一般に高性能なのはライト・バック方式であるため、情報処理装置の性能を落とさずに暗号化／復号を行うには、ライト・バック方式のキャッシュ・メモリ制御方式が望ましい。
【００１７】
ところが、ライト・バック方式のキャッシュを使用した場合、キャッシュ・メモリ内のデータを書き換えるタイミングと実メモリのデータを書き換えるタイミングが一致していない。そのため、ソフトウェアではキャッシュ・メモリ内に対するデータの書き込みのタイミングしか制御できない。その結果、ソフトウェアによる選択回路の制御は不可能となってしまう。つまり、ＯＳによって選択回路を制御すると、復号されたデータをライト・バック方式のキャッシュに保持させることができない。従って、処理機能を低下させずに暗号強度を高くするには、キャッシュ・メモリ方式や仮想記憶方式のような、様々なメモリの管理方法に対応した暗号／復号鍵の管理方法が必要である。
【００１８】
さらに、従来の技術は、あらかじめ決まった暗号化方式または暗号鍵で暗号化されたプログラムやデータをソフトウェアの保護機能付き情報処理装置内であらかじめ決まった復号方式または復号鍵で復号して利用し、かつ復号する際のオーバーヘッドを考慮して計算量が少ない比較的簡単な暗号化方式を用いなければならない。そのため、暗号化／復号方式または暗号／復号鍵は非公開または装置固有のものとなる。従って、装置の暗号化／復号方式または暗号／復号鍵を知りえない第三者が、装置のセキュリティ機能に守られるソフトウェアを自由に開発できないという問題点がある。
【００１９】
本発明はこのような点に鑑みてなされたものであり、システムのメモリの管理方法に依存せずに高い暗号強度を得ることができるソフトウェアの保護機能付き情報処理装置およびソフトウェアの保護機能付き情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明では上記課題を解決するために、命令およびデータの暗号化と復号とを行いながら動作するソフトウェアの保護機能付き情報処理装置において、暗号鍵で暗号化された暗号データを格納する記憶手段と、暗号鍵の有効期限を管理しており、任意の暗号鍵の有効期限がきれると、前記有効期限がきれた暗号鍵により暗号化された暗号データを再暗号化対象データとして、再暗号化指令を出力する再暗号化指令手段と、前記再暗号化指令が出力されると、再暗号化対象データの属性に応じた復号鍵を生成し、再暗号化対象データの全てが復号された時点で、再暗号化対象データの属性に対応させる復号鍵を変更する復号鍵生成手段と、前記再暗号化指令が出力されると、再暗号化対象データとして指定された暗号データを前記記憶手段から取得し、前記復号鍵生成手段が生成した復号鍵を用いて復号する復号手段と、前記再暗号化指令が出力されると、再暗号化対象データの属性に対応させる暗号鍵を変更し、変更後の暗号鍵を生成する暗号鍵生成手段と、前記再暗号化指令が出力されると、前記復号手段で復号された再暗号化対象データを受け取り、前記暗号鍵生成手段で生成された変更後の暗号鍵を用いて再暗号化対象データを暗号化し、前記記憶手段に格納する暗号化手段と、を有することを特徴とするソフトウェアの保護機能付き情報処理装置が提供される。
【００２１】
このような構成によれば、任意の暗号鍵の有効期限がきれると、再暗号化指令手段により、有効期限がきれた暗号鍵により暗号化された暗号データを再暗号化対象データとした、再暗号化対象データの再暗号化指令を出力される。すると、暗号鍵生成手段により、再暗号化対象データの属性に対応させる暗号鍵が変更され、変更後の暗号鍵が生成される。同時に、復号鍵生成手段により、再暗号化対象データの属性に応じた復号鍵が生成され、再暗号化対象データの全てが復号された時点で、再暗号化対象データの属性に対応させる復号鍵が変更される。次に、復号手段により、再暗号化対象データが復号鍵生成手段で生成された復号鍵を用いて復号され、暗号化手段に渡される。そして、暗号化手段により、暗号データ生成手段で生成された暗号鍵を用いて、再暗号化対象データが暗号化される。
【発明の効果】
【００２２】
本発明では、属性に対応付ける暗号／復号鍵を定期的に変更して再暗号化を行うようにしたため、メモリの管理方法に依存せずに暗号強度を強化することが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面に基づいて説明する。
図１は、本実施の形態の基礎となる技術を示す図である。本発明のソフトウェアの保護機能付き情報処理装置は、暗号化対象データ（命令とデータとを含む）の属性に応じて暗号鍵１ａを生成する暗号鍵生成手段１と、暗号データの属性に応じて復号鍵２ａを生成する復号鍵生成手段２と、暗号鍵生成手段１が生成した暗号鍵１ａを用いて、暗号化対象データを暗号化する暗号化手段３と、暗号化手段３が暗号化した暗号データ４ａを格納する記憶手段４と、記憶手段４に記憶されている暗号データ４ａを、復号鍵生成手段２が生成した復号鍵２ａを用いて復号する復号手段５と、復号手段５が復号したデータに含まれる命令に従って、復号したデータを処理する処理手段６と、処理手段６の処理終了後のデータを、暗号化対象データとして暗号化手段３へ出力する制御手段７と、で構成されている。
【００２４】
このような構成によれば、暗号化対象データが入力されると、暗号鍵生成手段１が、その暗号化対象データの属性に応じて暗号鍵１ａを生成する。この暗号鍵１ａを用いて、暗号化手段３が暗号化対象データを暗号化し、暗号データ４ａが記憶手段４に格納される。そして、制御手段７より、暗号データ４ａの処理要求があると、復号鍵生成手段２が暗号データ４ａの属性に応じて復号鍵２ａを生成する。復号手段５は、その復号鍵２ａを用いて、暗号データ４ａを復号する。復号されたデータは、処理手段６により処理される。制御手段７は、処理手段６により処理されたデータを暗号化対象データとして暗号化手段３に対して出力する。
【００２５】
これにより、暗号鍵と復号鍵とが暗号化対象データと暗号データとの属性によって定まるため、属性の異なるデータは異なる鍵で暗号化／復号され、暗号強度の高い暗号データを得ることができる。なお、上記の説明における属性とは、データのアドレス、アドレス領域、仮想アドレス、あるいはセグメントなどの、対象となるデータと何等かの関連性を有する各種情報を指す。
【００２６】
以下に本発明のソフトウェアの保護機能付き情報処理装置の具体的な構成について説明する。
図２は、ソフトウェアの保護機能付き情報処理装置のハードウェア構成例を示すブロック図である。この情報処理装置は、まずメインの構成として、データの演算やメモリアクセス等の制御を行うＭＰＵ（Micro Processing Unit ）である情報処理手段１１、情報処理手段１１が出力したデータを暗号化する暗号化手段１２、情報処理手段１１へ入力すべき暗号データを復号する復号手段１３、暗号化／復号の際の暗号鍵と復号鍵とを選択する鍵選択手段１４、及び鍵選択手段１４が選択した鍵を暗号化手段１２と復号手段１３とに供給する鍵供給手段１５が設けられている。これらの要素は、安全保護容器１０に収められている。また、暗号化手段１２と復号手段１３とは、システムバス２０を介してＲＡＭ（Random Access Memory）である記憶手段２１と、Ｉ／Ｏインタフェース（Ｉ／Ｏ）２２に接続されている。
【００２７】
Ｉ／Ｏ２２は、システムバス２０とペリフェラルバス２３との間のデータ伝送を制御する。ペリフェラルバス２３には、イーサネット（登録商標）を介したデータ通信を行うイーサネット・コントローラ２４、ＣＤ−ＲＯＭのデータを読み取るＣＤ−ＲＯＭドライブ２５、及び大容量のデータの磁気的なリード／ライトをするハードディスク２６が接続されている。
【００２８】
以上の構成において、まず、予め決められた暗号化方式と暗号鍵で暗号化されたデータがネットワークやハードディスク２６から供給される。暗号化されたデータを情報処理手段１１で実行するためには、そのデータを記憶手段２１にロードする必要がある。この時、暗号化されたデータの復号に使用する鍵の情報を、鍵選択手段１４に送っておく。鍵選択手段１４は鍵供給手段１５に指示して復号手段１３に復号鍵を渡すとともに、データの格納先アドレスに対応した暗号鍵を選択し、鍵供給手段１５に指示して暗号化手段１２に渡す。すなわち、暗号化されたプログラムまたはデータは復号手段１３で一旦復号され、さらに暗号化手段１２において格納先アドレスに対応した暗号鍵で暗号化され、記憶手段２１にロードされる。プログラム実行時は、鍵選択手段１４が鍵供給手段１５にデータの格納先アドレスに対応した復号鍵を選択指示して復号手段１３に渡すことで復号が行われる。
【００２９】
また、この情報処理装置の情報処理手段１１、暗号化手段１２、復号手段１３、鍵選択手段１４、及び鍵供給手段１５は保護容器１０内に格納されている。保護容器１０は、内部の装置が外部からのプロービングに対して保護されるような仕組みを備えている。保護容器１０はそれが取り外されたり穴を開けられたりした時に内部の装置の動作を停止させたり秘匿データが読み出されないように消去する機能を有しており、これにより暗号化／復号方式や暗号／復号鍵および復号されたデータの盗用や改ざんを完全に防ぐことができる。したがって、復号されたデータが存在する部分はすべて保護容器内に格納しなければならない。保護容器は攻撃対抗容器（Tamper Resistant Module ）とも呼ばれ、その例としては、米国特許４，５９３，３８４号や特開昭６３ー１２４１５３号公報、特開平２−４４４４７号公報などがある。
【００３０】
このような安全保護容器は、複雑な経路をたどる導体路や論理素子が表面に形成された包囲体で秘密情報を取り扱う回路を囲み、内部の秘密情報を不正に解析しようとして包囲体を破壊した場合に導体路の切断や短絡または論理素子の動作不良が生じ、それをトリガーとして暗号鍵などの秘密情報を消去するという構造になっている。したがって暗号鍵、復号鍵及び暗号化されていないデータ等を取り扱うＭＰＵ、暗号化装置及び復号装置を安全保護容器内に格納すれば、不正を行おうとする者は暗号を解読する手掛かりをほとんど失うことになる。暗号鍵、復号鍵及び暗号化されていないデータ等を取り扱うこれらの装置は１つのＬＳＩに集積して実現するのが望ましいが、複数のＬＳＩで構成した場合にはＭＣＭ（マルチ・チップ・モジュール）パッケージなどに封止して、外部にチップ間の配線が露出しないようにしてもよい。また、秘密情報の保持にはバッテリーバックアップされたＳＲＡＭ（Static RAM）を用いて、容器が開けられると同時に電力の供給が断たれ、ＳＲＡＭの内容が失われるような構造にしてもよい。
【００３１】
以上の例は、ネットワーク等を経由して入力された暗号データも、内部の暗号データと同じアルゴリズムで復号する場合の例である。ところが、この方式では、外部からこの情報処理装置に提供するソフトウェアも、内部の暗号データと同様に計算量の少ないアルゴリズムで暗号化しなければならない。そこで、複雑なアルゴリズムの復号を行う復号手段を別に設けることによって、この情報処理装置に提供するソフトウェアの暗号強度の強化を図ることができる。以下に、その例を示す。
【００３２】
図３は複数の復号手段を有するソフトウェアの保護機能付き情報処理装置のハードウェア構成を示すブロック図である。この情報処理装置には、ＭＰＵである情報処理手段３１と、流通ソフト復号手段３２と、暗号化手段３３と、復号手段３４と、ＲＡＭである記憶手段４１が設けられている。さらに、Ｉ／Ｏインタフェース（Ｉ／Ｏ）４２を介してハードディスク４６と、ＣＤ−ＲＯＭドライブ４５と、イーサネット・コントローラ４４とが接続されている。また、情報処理手段３１、流通ソフト復号手段３２、暗号化手段３３、及び復号手段３４は、安全保護容器３０に収められている。安全保護容器３０内の各構成要素と、記憶装置４１と、Ｉ／Ｏ４２とはシステムバス４０で接続されている。Ｉ／Ｏ４２と、イーサネット・コントローラ４４と、ハードディスク４６と、ＣＤ−ＲＯＭドライブ４５とは、ペリフェラルバス４３で接続されている。
【００３３】
以上の構成において、データはまず、暗号化され、ネットワークやＣＤ−ＲＯＭ等によってソフトウェア提供者からユーザに提供される。この時用いられる暗号化方式は汎用的で暗号強度の高いものを用いる。例えば、ソフトウェア提供者は暗号化方式としてＤＥＳ（Data Encryption Standard: 米商務省標準局〔現在の米国標準技術協会〕が１９７７年に公表した暗号アルゴリズム）等を用いて、ユーザに提供するデータを暗号化する。そして復号鍵は例えばＲＳＡ（Rivest,Shamir,Adleman ：Ronald Rivest,Adi Shamir,leonard Adlemanの３氏が考案したアルゴリズム）暗号によってソフトウェアの保護機能付き情報処理装置の公開鍵で暗号化し、暗号化されたデータとペアにしてユーザに提供する。ユーザは暗号化されたデータと装置の公開鍵で暗号化された復号鍵をＩ／Ｏ４２から流通ソフト復号手段３２に送って復号する。復号されたデータは直接暗号化手段３３に送られ非公開の暗号方法または暗号鍵で暗号化される。そのため、ユーザは復号されたデータにアクセスすることはできない。暗号化手段３３で暗号化されたデータは記憶手段４１に格納される。情報処理手段３１は、記憶手段４１に格納されている暗号化されたデータを復号手段３４で復号して受けとり、そのデータに含まれる命令を実行する。情報処理手段３１が出力するデータの中で暗号化が必要なものは暗号化手段３３で暗号化して記憶手段４１に格納する。
【００３４】
このように公開された暗号化方式と暗号鍵を用いて暗号化されたデータをソフトウェアの保護機能付き情報処理装置内に取り込んで流通ソフト復号手段３２で復号できるので、ソフトウェア提供者は暗号化手段３３及び復号手段３４で使用する暗号化／復号方式または暗号／復号鍵を知る必要はなく、ただ情報処理手段３１用にソフトウェアを開発すればよい。つまり、ソフトウェアの保護機能付き情報処理装置内の暗号化／復号方式または暗号／復号鍵を知りえない第三者が、ソフトウェアの保護機能付き情報処理装置に守られるソフトウェアを自由に開発できる。
【００３５】
また、この情報処理装置も図２に示した例と同様に安全保護容器３０で重要な構成要素が保護されているため、内部の装置が外部からのプロービングに対して保護されている。
ここで、図２に示した情報処理装置と図３に示した情報処理装置とを融合させることにより、さらにデータの保護を強化することができる。この例を図４に示す。
【００３６】
図４の情報処理装置は、情報処理手段５１、流通ソフト復号手段５２、暗号化手段５３、復号手段５４、鍵供給手段５６、鍵選択手段５５、記憶手段６１、Ｉ／Ｏ６２、ハードディスク６６、ＣＤ−ＲＯＭドライブ６５、イーサネット・コントローラ６４、保護容器５０、システムバス６０、ペリフェラルバス６３からなる。なお、この情報処理装置は、仮想記憶方式を採用しており、ページ単位でデータを取り扱うものとする。
【００３７】
このような構成において、暗号化されたデータと復号鍵は、ネットワークやＣＤ−ＲＯＭ等によってソフトウェア提供者からユーザに提供される。この暗号化されたデータを実行するためにロードするには、まず装置の公開鍵で暗号化された復号鍵をＩ／Ｏ６２を介して流通ソフト復号手段５２に送って復号する。次に、復号されたデータは直接暗号化手段５３に送られる。同時に鍵選択手段５５は、データの格納先ページ番号に対応した暗号鍵群を選択する。選択された暗号鍵群は、鍵供給手段５６により暗号化手段５３に供給される。そして、暗号化手段５３に送られたデータは、鍵供給手段５６から供給された鍵群によって暗号化される。このときの暗号化方法または暗号鍵は非公開であるので、ユーザは復号されたデータにアクセスすることはできない。そして暗号化手段５３でページ毎に異なる暗号鍵で暗号化されたデータは、記憶手段６１に格納される。また記憶手段６１に格納しきれないページはハードディスク６６にスワップアウトされる。情報処理手段５１が記憶手段６１に格納されている暗号化されたプログラムを実行するには、鍵選択手段５５がデータの格納先ページに対応した復号鍵群を鍵供給手段５６から選択し、選択された復号鍵群で復号手段５４がデータを復号して、復号されたプログラムを情報処理手段５１が実行する。情報処理手段５１が出力するデータの中で暗号化が必要なものは暗号化手段５３で暗号化して記憶手段６１に格納する。
【００３８】
図５は鍵選択手段で鍵群を選択する例の詳細を示す図である。鍵選択手段５５はページ内のデータに対応する鍵を特定する鍵特定手段５５ａを有する。鍵供給手段５６には、複数の鍵群（Ａ群５６１、Ｂ群５６２、Ｃ群５６３）が格納されている。鍵群の内の各鍵は、ページオフセットと対応している。そして、情報処理手段５１から暗号化／復号すべきページのページ番号が出力されると、鍵選択手段５５がページ番号に応じて鍵群を指定する。この際、鍵特定手段５５１が、ページ内の各ブロックに対応する鍵群内の鍵を特定する。この例では、鍵選択手段５５はＣ群５６３を指定している。鍵供給手段５６は、指定されたＣ群５６３の鍵群を、暗号化手段５３と復号手段５４とに供給する。暗号化手段５３と復号手段５４とは、暗号化あるいは復号すべきページの各ブロックを供給された鍵群の個々の鍵で暗号化あるいは復号する。
【００３９】
ここでページの大きさを２５６バイト、１つの鍵で暗号化する暗号ブロックを１６バイトとすると、鍵群はそれぞれ１６個までの鍵で構成される。いま１バイト毎にページ内のオフセットアドレスが与えられ、鍵群が１６個の鍵からなるとすると、鍵特定手段はオフセットアドレスの任意の４ビットでどの鍵を使用するか特定する。また、暗号ブロック内の任意の４ビット（プログラムまたはデータそのものの任意の４ビットで、この４ビットは暗号化されない）でどの暗号／復号鍵を使用するか特定してもよい。
【００４０】
以上のようにして、ソフトウェアの保護機能付き情報処理装置内の暗号化／復号方式または暗号／復号鍵を知りえない第三者が、ソフトウェアの保護機能付き情報処理装置に守られるソフトウェアを自由に開発でき、暗号強度を高くすることができる。
【００４１】
ここで、所定タイミングで暗号データの鍵を変更することにより、さらに暗号強度を高くすることができる。以下にその例を示す。
図６は再暗号化手段による鍵の変更方法の第１の例を示す図である。この例では暗号化と復号に同一の鍵を用いることとする。（Ａ）は鍵の変更前の状態を示している。この例では、鍵供給手段５６ａ内には「Ａ」、「Ｂ」、「Ｃ」の３つの鍵５６ａａ，５６ａｂ，５６ａｃが設けられている。そして、鍵選択手段５５ａは暗号鍵、復号鍵共に、「Ｃ」の鍵５６ａｃを選択している。従って、暗号化手段５３ａと復号手段５４ａとには、鍵「Ｃ」が供給されている。この状態で、鍵選択手段５５ａに対して、再暗号化手段５７から鍵の変更指令が出力される。ここでは、ある期間ごとに鍵の変更指令を出力するものとする。なお、再暗号化手段５７は、実際には、メインメモリにロードしたプログラムを情報処理手段が実行することにより実施される機能である。また、情報処理手段がプログラムに従ってＤＭＡＣ(Direct Memory Access Controller) に命令して実行させてもよい。
【００４２】
（Ｂ）は鍵の変更指令出力後の状態を示す図である。ある期間が過ぎて鍵の変更指令が出力されると、再暗号化手段５７の制御に従って、鍵選択手段５５ａは選択する暗号鍵を「Ｃ」から「Ａ」に変更する。これにより、鍵「Ａ」が、鍵供給手段５６ａから暗号化手段５３ａに渡される。この状態で記憶装置内の鍵「Ｃ」で暗号化されているデータを復号して、さらに鍵「Ａ」で暗号化して記憶装置内に戻す。これにより、暗号鍵を鍵「Ｃ」から鍵「Ａ」に変更しデータを再暗号化できる。
【００４３】
（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。再暗号化手段５７は、鍵「Ｃ」で暗号化されているデータの全てを鍵「Ａ」で暗号化し終わった時点で、復号鍵を鍵「Ａ」にするように鍵選択手段５５ａに指令する。鍵選択手段５５ａが、指示に従って復号鍵を変更した結果、鍵供給手段５６ａから復号手段５４ａに鍵「Ａ」が渡される。
【００４４】
このように再暗号化手段５７によって鍵選択手段５５は鍵をダイナミックに変更することができるので、暗号強度を高くすることができる。また、一度に用いる暗号／復号鍵または暗号／復号鍵群は、鍵供給手段５６から供給される鍵または鍵群の１つに限る必要はなく、複数の鍵または複数の鍵群を一度に使用してもよい。
【００４５】
図７は再暗号化手段による鍵の変更方法の第２の例を示す図である。この例でも暗号化と復号に同一の鍵を用いるものとする。（Ａ）は鍵の変更前の状態を示している。鍵供給手段５６ｂは「Ａ」，「Ｂ」，「Ｃ」の３つの鍵５６ｂａ，５６ｂｂ，５６ｂｃが供給可能である。鍵選択手段５５ｂは、アドレス５５ｂａ、暗号鍵５５ｂｂ、及び復号鍵５５ｂｃの項目が設けられた鍵管理テーブルを有している。この対応表によって、アドレスと鍵との対応関係を管理している。この例では、アドレス「０」には、暗号鍵「Ａ」，復号鍵「Ａ」が対応しており、アドレス「１」には、暗号鍵「Ｂ」，復号鍵「Ｂ」が対応しており、アドレス「２」には、暗号鍵「Ｃ」，復号鍵「Ｃ」が対応している。そして、再暗号化手段５７ａは、鍵選択手段５５ｂに対して、アドレス「２」のデータの鍵変更指令を出力するものとする。
【００４６】
（Ｂ）は鍵の変更指令出力後の状態を示す図である。一定時間が過ぎてアドレス「２」の鍵を「Ｃ」から「Ａ」に変更する場合、再暗号化手段５７ａは鍵選択手段５５ｂ内の鍵管理テーブルのアドレス「２」の暗号鍵を「Ａ」に変更する。従って、鍵選択手段５５ｂは鍵供給手段５６ｂに指示して暗号鍵「Ａ」を暗号化手段に渡し、復号手段には引き続き復号鍵「Ｃ」を渡す。この状態で記憶装置内の復号鍵「Ｃ」で暗号化されているアドレス「２」のデータを復号して、さらに暗号鍵「Ａ」で暗号化して記憶装置内に戻す。これにより、暗号鍵を「Ｃ」から「Ａ」に変更し、アドレス２のデータを再暗号化できる。
【００４７】
（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。再暗号化手段５７ａは、再暗号化が終わった時点で、鍵選択手段５５ｂ内の鍵管理テーブルのアドレス「２」の復号鍵を「Ｃ」から「Ａ」に変更する。この例でも、アドレスをアドレス領域に、鍵を鍵群にすることもできる。
【００４８】
上記の例では、鍵供給手段内には複数の鍵が予め登録されているが、この登録されている鍵を変更することもできる。以下にその例を示す。
図８は鍵供給手段内の鍵を変更する場合の例を示す図である。この例では暗号化と復号に同一の鍵を用いることとする。鍵供給手段内の鍵を変更するには、図６に示したような再暗号化の手順が必要になる。
【００４９】
（Ａ）は鍵の変更前の状態を示している。この例では、鍵供給手段５６ｃ内には「Ａ」、「Ｂ」、「Ｃ」の３つの鍵５６ｃａ，５６ｃｂ，５６ｃｃが設けられている。そして、鍵選択手段５５ｃは暗号鍵、復号鍵共に、「Ｃ」の鍵５６ｃｃを選択している。従って、暗号化手段５３ｃと復号手段５４ｃとには、鍵「Ｃ」が供給されている。この状態で、鍵選択手段５５ｃに対して、再暗号化手段５７ｂから鍵の変更指令が出力される。ここでは、ある期間ごとに鍵の変更指令を出力するものとする。
【００５０】
（Ｂ）は鍵の変更指令出力後の状態を示す図である。ある期間が過ぎて鍵の変更指令が出力されると、再暗号化手段５７ｂの制御に従って、鍵選択手段５５ｃは選択する暗号鍵を「Ｃ」から「Ａ」に変更する。鍵「Ａ」が、鍵供給手段５６ｃから暗号化手段５３ｃに渡される。この状態で記憶装置内の鍵「Ｃ」で暗号化されているデータを復号して、さらに鍵「Ａ」で暗号化して記憶装置内に戻す。
【００５１】
（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。再暗号化手段５７ｂは、鍵「Ｃ」で暗号化されているデータの全てを鍵「Ａ」で暗号化し終わった時点で、復号鍵を鍵「Ａ」にするように鍵選択手段５５ｃに指令する。鍵選択手段５５ｃが、指示に従って復号鍵を変更した結果、鍵供給手段５６ｃから復号手段５４ｃに鍵「Ａ」が渡される。そして、「Ｃ」の鍵５６ｃｃを、「Ｄ」の鍵５６ｃｄに変更する。このようにして、鍵供給手段５６ｃ内の鍵「Ｃ」が廃棄され鍵「Ｄ」の供給が開始される。
【００５２】
ここで鍵Ｄの生成手段としては、新たに鍵を作成する方法と多数の鍵が登録された鍵のテーブルから選択する方法とがある。図９は、鍵の生成方式を示す図である。ここで、以下に示す２つの例は、鍵供給手段５６ｃに関しては、図８に示したものと変わるところがないため、同じ符号を付して説明を省略する。
【００５３】
（Ａ）は新たな鍵を作成する方式を示す図である。鍵生成手段５８ａは、内部に原型となる鍵５８ａａを有しており、この鍵５８ａａを変形させ新たな「Ｄ」の鍵５６ａｂを生成する。鍵生成手段５８ａとしては、シリアル・シフト・レジスタを用いた疑似乱数発生装置や、装置固有の係数と時刻を変数とした関数を用いることができる。（Ｂ）は鍵テーブルを利用する方式を示す図である。鍵生成手段５８ｂ内には、多数の鍵５８ｂａ〜５８ｂｅが登録されている。そして、この中の任意の鍵５８ｂｄを選択し、「Ｄ」の鍵とする。
【００５４】
このように２通りの方法が考えられるが、もちろん鍵生成手段と鍵テーブルを組み合せてもよい。また、鍵選択手段からの鍵の指定を、名前ではなく識別子で行うことにより、鍵供給手段内の鍵が変更されたことを鍵選択手段が認識する必要がなくなる。
【００５５】
図１０は識別子を用いた鍵の選択方式を示す図である。（Ａ）は鍵の変更前の状態を示す図である。鍵供給手段５６ｄは「Ａ」、「Ｂ」、「Ｃ」の３つの鍵５６ｄａ，５６ｄｂ，５６ｄｃが登録されており、各鍵５６ｄａ，５６ｄｂ，５６ｄｃには、０〜２の識別子が付けられている。鍵選択手段５５ｄは、暗号鍵識別子を「２」、復号鍵識別子を「２」として出力している。従って、暗号化手段５３ｄと復号手段５４ｄとには、鍵「Ｃ」が供給されている。この状態で、鍵「Ｃ」が鍵「Ｄ」に変更される。
【００５６】
（Ｂ）は鍵の変更後の状態を示す図である。鍵選択手段５５ｄは、同じように暗号鍵識別子を「２」、復号鍵識別子を「２」として出力しているが、鍵供給手段５６ｄ内の「２」の識別子には、鍵「Ｄ」が登録されている。従って、暗号化手段５３ｄと復号手段５４ｄとには、鍵「Ｄ」が供給されている。このようにして、鍵選択手段５５ｄは、鍵Ｃが鍵Ｄに置き換わってしまった事を認識する必要がなくなる。
【００５７】
次に、鍵を書き換えるタイミングを時間管理手段で管理し、再暗号化手段で異なる鍵でデータを再暗号化して鍵を更新する例を示す。時間管理手段は、時間管理テーブルを用いて、再暗号化のタイミンングを管理することができる。
【００５８】
図１１は時間管理テーブルを示す図である。時間管理テーブル５９は、鍵識別子５９ａ、鍵寿命５９ｂ、経過時間５９ｃ、書き換えフラグ５９ｄの項目を有している。そして、鍵識別子５９ａの「０〜２」は、それぞれ鍵「Ａ」〜「Ｃ」と対応している。鍵寿命５９ｂには、その鍵を書き換える周期が設定されている。経過時間５９ｃは、現在の鍵の使用開始からの経過時間を示している。書き換えフラグ５９ｄは、値が「０」で、経過時間が鍵寿命を超えていないことを示し、値が「１」で、経過時間が鍵寿命を超えたことを示す。
【００５９】
この時間管理テーブル５９を用いて、時間管理手段はそれぞれの鍵の寿命と、鍵を書き換えてからの経過時間を管理する。ここで経過時間が鍵寿命を超えた鍵の有効鍵通知手段である書き換えフラグを立てて、鍵の書き換えおよび使用している鍵の変更が必要な事を再暗号化手段に知らせる。
【００６０】
図では、識別子「０」の寿命は「１０分」、経過時間は「１分」、書き換えフラグは「０」である。識別子「１」の寿命は「６０分」、経過時間は「３０分」、書き換えフラグは「０」である。識別子「２」の寿命は「６０分」、経過時間は「６１分」、書き換えフラグは「１」である。つまり、識別子「２」は、経過時間が寿命を超えている。
【００６１】
図１２は時間管理手段の処理手順を示すフローチャートである。
〔Ｓ１〕寿命となった鍵識別子があるか否かを判断し、寿命となった鍵識別子があればステップＳ２に進み、無ければこのステップを繰り返す。
【００６２】
〔Ｓ２〕寿命となった鍵識別子の書き換えフラグを立てる。
〔Ｓ３〕フラグが立っている鍵識別子の鍵が使用されているか否かを判断し、使用されていればこのステップを繰り返し、使用されていなければステップＳ４に進む。なお、フラグが立っている鍵識別子の鍵が使用されているか否かの情報は、再暗号化手段から与えられる。
【００６３】
〔Ｓ４〕寿命となった鍵識別子の鍵の書き換えを行い、ステップＳ１に進む。
図１３は再暗号化手段の処理手順を示すフローチャートである。
〔Ｓ５〕書き換えフラグを読む。
【００６４】
〔Ｓ６〕書き換えフラグが立っているか否かを判断し、書き換えフラグが立っていればステップＳ７に進み、書き換えフラグが立っていなければステップＳ５へ進む。
〔Ｓ７〕フラグが立っている鍵識別子の鍵で暗号化されているデータを、フラグが立っていない鍵識別子の鍵で暗号化し直す。
【００６５】
〔Ｓ８〕フラグが立っている鍵識別子を使用していないことを、時間管理手段に知らせ、ステップＳ５に進む。
図１２、図１３に示したように時間管理手段と再暗号化手段が動作することにより、まず、寿命となった鍵があったなら、時間管理手段がその鍵の鍵アドレスに書き換えフラグを立てる。すると、再暗号化手段は、書き換えフラグが立っていることを検出し、フラグが立っている鍵識別子の鍵をフラグが立っていない鍵識別子の鍵に鍵変更をして、時間管理手段に知らせる。時間管理手段はフラグが立っている鍵アドレスの鍵が使用されていない事を確認して、寿命となった鍵アドレスの鍵を書き換えることを鍵供給手段に要求する。このようにして安全に鍵の書き換えを行うことができる。
【００６６】
図１４は、時間管理手段の鍵書き換えに関する他の動作例を示すフローチャートである。この例では、書き換えフラグを立てて１０分の間に必ず鍵の書き換えを行う。
〔Ｓ１１〕寿命となった鍵識別子があるか否かを判断し、寿命となった鍵識別子があればステップＳ１２へ進み、なければこのステップを繰り返す。
【００６７】
〔Ｓ１２〕寿命となった鍵識別子の書き換えフラグを立てる。
〔Ｓ１３〕フラグが立っている鍵識別子の鍵が使用されているか否かを判断し、使用されていればステップＳ１４に進み、使用されていなければステップＳ１５に進む。
【００６８】
〔Ｓ１４〕フラグが立てられてから１０分が経過したか否かを判断し、経過していればステップＳ１５に進み、経過していなければステップＳ１３に進む。
〔Ｓ１５〕寿命となった鍵識別子の鍵の書き換えを要求し、ステップＳ１１に進む。
【００６９】
このようにすることで、再暗号化手段が改ざんされて、鍵の変更を行わなくなってしまった場合でも、鍵は強制的に書き換えられ、その結果情報処理手段が正常動作しなくなることで、自己破壊的にデータの秘匿性を保つことができる。この例では１０分の間に必ず鍵の書き換えを行うようにしたが、実際は、システムの使用状況や情報処理手段１の処理能力を勘案して決定するとよい。また、鍵を強制的に書き換える代わりにＮＭＩ（Non Maskable Interrupt）を発生させて、システムをリセットしてもよい。
【００７０】
次に、図４の例に示す鍵選択手段５５の鍵管理方式の幾つかの例を説明する。どのデータをどの暗号化方式及びどの鍵で暗号化したかを管理する方法としては、記憶手段６１のアドレスを用いるのが簡単である。特に仮想記憶方式を使わないシステムでは、記憶手段６１のアドレスを直接用いるか、あるいは何等かの単位毎に管理すればよい。例えばアドレスと暗号鍵の対応を管理する鍵管理テーブルを用いるとよい。
【００７１】
仮想記憶方式で記憶を管理するシステムでは、記憶手段６１に格納しきれないページまたはセグメントは記憶手段６１からハードディスク６６に移される。ハードディスク６６に移されたページまたはセグメントは記憶手段６１の同じアドレスに戻されるとは限らないので、記憶手段６１のアドレスを直接用いて鍵の管理を行うことはできない。そこで仮想アドレスによる鍵の管理が必要になる。仮想アドレスによる鍵の管理の方法としては、仮想アドレスを直接用いる方法と、ハードディスク６６と記憶装置６１の間でやり取りされる物理単位で固定長のページを用いる方法と、ハードディスク６６と記憶装置６１の間でやり取りされる論理単位で可変長のセグメントを用いる方法と、仮想記憶空間を複数持つような多重仮想記憶方式をとる場合は仮想記憶空間毎に鍵を管理する方法がある。
【００７２】
ページによって仮想記憶を管理する場合、一般に仮想アドレスはページ番号とページオフセットから成っているので、例えばページ番号と鍵識別子の対応を管理する鍵管理テーブルを用いるとよい。図１５はページ番号と鍵識別子の対応を管理する鍵管理テーブルの例を示す図である。通常、仮想アドレス７０はページ番号７１とページ・オフセット７２で構成されている。そこで、鍵管理テーブル８０には、ページ番号８１に対応して鍵識別子８２を登録しておく。従って、ある仮想アドレスへのアクセスが発生すると、その仮想アドレスのページ番号を抽出する。そして、鍵管理テーブル８０から、抽出したページ番号に対応する鍵識別子を選択することができる。
【００７３】
また、鍵管理テーブルが大きくなる場合には、鍵管理テーブルを記憶装置６１に置き、頻繁に使用する鍵管理テーブルの一部を鍵選択手段内のＴＬＢ（Table Lookaside Buffer）に保持して使用し、ＴＬＢにないものは記憶装置６１から取り出して、ＴＬＢを更新するようにしてもよい。図１６は鍵選択手段内のＴＬＢを示す図である。鍵選択手段内のＴＬＢ９０は、アドレス・タグ９１と鍵識別子９２との格納部で構成されている。アドレス・タグ９１には、仮想アドレス７０のページ番号７１が格納され、格納されたページ番号７１に対応する鍵識別子が鍵識別子９２の格納部に格納される。これにより、鍵管理テーブルを保持するためのメモリサイズを縮小することができる。
【００７４】
しかし、一般にページによって仮想記憶を管理するシステムの場合、仮想記憶を管理するためのページテーブルを持ち、仮想アドレスから物理アドレスへの変換と、各ページが主記憶内に存在するか否かを管理し、またそのためのハードウエアであるＭＭＵ（Memory Management Unit）を有している。そこで、鍵識別子の情報をページテーブルに追加することで、ＭＭＵと鍵管理テーブルの機能を融合させることができる。図１７はＭＭＵ内のＴＬＢを示す図である。ＭＭＵ内のＴＬＢ１００には、アドレス・タグ１０１、主記憶内に存在するか否かを示すビット１０２、鍵識別子１０３、及びページ・アドレス１０４の格納部で構成されている。アドレス・タグ１０１には仮想アドレス７０のページ番号７１が格納されており、主記憶内に存在するか否かを示すビット１０２により、そのページがメモリ内にあるか否かが示されている。そして、鍵識別子１０３により、そのページの鍵が示されており、ページ・アドレス１０４により、そのページのアドレスが示されている。また、セグメントによって管理する場合もページと同様に鍵の管理ができる。
【００７５】
仮想記憶とライトバック方式のキャッシュ・メモリを使用して、アドレスによる暗号鍵管理を行った場合ソフトウェアによる鍵の選択は不可能である。そこで、図１７のようにＭＭＵを利用することで、ハードウェアによる鍵の選択が可能になる。つまり、ＭＭＵ内ではページ番号およびセグメント番号に対応したアドレスタグをアドレスとした連想記憶方式でページテーブルおよびセグメントテーブルの一部を保持しており、通常キャッシュ・メモリ内に存在するデータが属するページまたはセグメントは、ＭＭＵ内に存在する。ページテーブルまたはセグメントテーブルがＭＭＵ内に存在するので、ＭＭＵから鍵アドレスを取得することで、ハードウェアによる鍵の選択が可能になる。
【００７６】
図１８はインテル社製のＭＰＵであるｉ８０２８６のタスク状態セグメントに鍵アドレスの情報を付加した例を示す図である。タスク状態セグメント１１０は、バック・リンク１１１、特権レベル０，１，２に対するスタック・ポインタＳＰ，ＳＳの初期値１１２、ＩＰ１１３、ＳＲ１１４、汎用レジスタ１１５、ＥＳ１１６、ＳＳ１１７、ＣＳ１１８、ＤＳ１１９、タスクＬＤＴセレクタ１２０、及び鍵識別子１２１の格納領域がある。このタスク状態セグメント１１０はタスク毎に生成されるため、このようにする事で、タスク（プロセス）毎に暗号鍵を管理する事ができる。またｉ８０２８６ではタスク毎に仮想記憶空間を有する多重仮想記憶方式を採用しているので、仮想記憶空間毎の鍵管理の例でもある。
【００７７】
暗号化されていないデータを図４に示したような本発明の装置で実行する方法は２種類ある。１つは暗号化されていないデータも暗号化手段５３で暗号化して、暗号化されて供給されたデータと同様に取り扱う方法である。２つ目は暗号化されて供給されたデータが必ず流通ソフト復号手段５２で復号される場合、このことを利用して、流通ソフト復号手段５２で復号されたデータのみに有効な鍵アドレスを与えるようにする方法である。このようにして、暗号化されたデータの秘匿性を保ったままで暗号化されていないデータも扱うようにすることができる。
【００７８】
以上の例は、暗号化／復号の対象となるデータに関連性のあるアドレス等の情報を用いて鍵管理をするものであるが、データに関連性のある情報ではなく、データの内容による鍵管理も可能である。例えば、プログラムおよびデータの内容の一部分で暗号鍵を選んで、残りの部分を暗号化する方法が考えられる。以下に、その例を説明する。
【００７９】
図１９はデータの内容による鍵管理の暗号化の処理手順を示すフローチャートである。これは、暗号化手段が行う処理である。
［Ｓ２１］暗号化されるべきデータを暗号化手段へ読み込む。
【００８０】
［Ｓ２２］読み込んだデータから特定の数ビットを抜き出す。
［Ｓ２３］ステップＳ２２において抜き出した数ビットに対応する暗号鍵を、鍵テーブルより選択する。
【００８１】
［Ｓ２４］ステップＳ２３において選択した暗号鍵を用いて、暗号化されるべきデータの、抜き出した数ビット以外の部分を暗号化する。
［Ｓ２５］暗号化したデータに、ステップＳ２２において抜き出した数ビットを埋め込む。
【００８２】
以上の各ステップにおいて、暗号化されるデータの状態がどのように変化するかを、図２０の状態遷移図に従って説明する。
（Ａ）は、ステップＳ２１の状態を示す図である。暗号化すべきデータ１３０が読み込まれる。暗号化される前のデータ１３０は３２ビットからなり、情報処理手段で直接処理を行うことのできる状態にある。
【００８３】
（Ｂ）は、ステップＳ２２の状態を示す図である。暗号化される前のデータ１３０から、ある規定に従った特定の数ビットを抜き出す。例では７、１１、１５及び２３ビット目の４ビットのデータを抜き出している。従って、２８ビットのデータ１３１が残ることとなる。抜き出したビットは、所定の配列に並べられビット情報１３２となる。
【００８４】
（Ｃ）は、ステップＳ２３の状態を示す図である。４ビットのビット情報１３２に対応する暗号鍵を、予め用意された鍵テーブル１４０から選択する。鍵テーブル１４０は、抜き出したビットによるビット情報１４０ａに対応する鍵１４０ｂが一意に選択できるようになっている。例では抜き出すビット数が４ビットであることから鍵も４ビットで分類されており、１６種類のビット情報「００００」，「０００１」，「００１０」・・・のそれぞれに対応する１６個の鍵１４１，１４２，１４３・・・が存在する。この例では、抜き出したビットによるビット情報１３２の値が「００１０」であるため、鍵１４３が暗号鍵として選択されている。
【００８５】
（Ｄ）は、ステップＳ２４の状態を示す図である。選択された鍵１４３を暗号鍵に用いて、抜き出した４ビットのビット情報１３２以外の２８ビットのデータ１３１を暗号化し、２８ビットの暗号データ１３３を生成する。
【００８６】
（Ｅ）は、ステップＳ２５の状態を示す図である。（Ｂ）において抜き出した４ビットのビット情報１３２を、２８ビットの暗号データ１３３に埋め込み、３２ビットの暗号データ１３４として記憶手段に格納する。
【００８７】
抜き出した４ビットのビット情報１３２を埋め込む方法は、復号の際にビット情報１３２を分離するための方法とセットで決定されている。この２つの方法が一意に決定できるのであれば、埋め込む位置を最初に抜き出したビット位置と同じにする必要はない。また、最後にスクランブル等を行い、第三者に暗号鍵の選択に用いたビットの位置を容易に見つけられないようにすることも可能である。なお、最後にスクランブルを行う場合には、ステップ２４で行う暗号化はスクランブル以外の方法である必要がある。更に、抜き出した４ビットのビット情報１３２を暗号化した２８ビットの暗号データ１３３に埋めこむ際、ＸＯＲ等の暗号化方法で暗号化して埋めこんでもよい。
【００８８】
図２１は、データの内容による鍵管理の復号の処理手順を示すフローチャートである。
［Ｓ３１］暗号化されているデータを復号手段へ読み込む。
［Ｓ３２］復号手段において、読み込んだデータから特定の数ビットを抜き出す。
【００８９】
［Ｓ３３］ステップＳ３２において抜き出した数ビットに対応する復号鍵を、鍵テーブルより選択する。
［Ｓ３４］ステップＳ３３において選択した復号鍵を用いて、復号されるべきデータの、抜き出した数ビット以外の部分を復号する。
【００９０】
［Ｓ３５］復号したデータに、ステップ３２において抜き出した数ビットを埋め込む。
復号されるデータの状態がどのように変化するかを、図２２の状態遷移図に従って説明する。３２ビットのデータを復号する場合を考える。但しこの３２ビットは、図１９及び図２０に示した暗号化方法に従って暗号化された後、記憶手段に格納されていたものとする。なお、この例は暗号鍵と同じ鍵を復号鍵とする場合である。
【００９１】
（Ａ）は、ステップＳ３１の状態を示す図である。暗号データ１３４を記憶装置から読み込む。暗号データ１３４は３２ビットからなり、情報処理手段で直接処理を行うことのできない状態にある。
【００９２】
（Ｂ）は、ステップＳ３２の状態を示す図である。暗号データ１３４から、特定の数ビットを抜き出し、ビット情報１３２を得る。例では６、１３、２７及び３０ビット目の４ビットを抜き出している。この４ビットのデータを抜き出す位置は、暗号化の際に、ビット情報１３２の各ビットを埋め込んだ位置である。この結果、２８ビットの暗号データ１３３が残ることとなる。
【００９３】
（Ｃ）は、ステップＳ３３の状態を示す図である。抜き出した４ビットのビット情報１３２に対応する鍵１４３を、予め用意された鍵テーブル１４０から選択する。暗号化の際に用いられたビット情報の値が「００１０」であるため、鍵テーブル１４０を用いて、暗号化の際の鍵１４３と同一の鍵を選択することができる。この選択された鍵１４３が復号鍵となる。
【００９４】
（Ｄ）は、ステップＳ３４の状態を示す図である。選択した鍵１４３を復号鍵として、抜き出した４ビットのデータ１３２以外の２８ビットの暗号データ１３３を復号し、２８ビットのデータ１３１を生成する。
【００９５】
（Ｅ）は、ステップＳ３５の状態を示す図である。（Ｂ）において抜き出した４ビットのデータ１３２を、２８ビットのデータ１３１に埋め込み、３２ビットのデータ１３０を得る。埋め込む位置は、暗号化の際に４ビットのデータを抜き出した位置と同じ位置である。この結果、暗号化する前のデータと同一のデータ１３０が得られる。
【００９６】
以上のような方法により、復号鍵の抽出に用いるデータが復号の対象となる暗号化されたデータの一部で構成される。そのため、余分な情報をデータに付加する必要がなく、メモリを有効に使用できる。上記の例では具体的なビット数を示して説明を行ったが、これは説明を解りやすくするためであり、ビット数はソフトウェアの保護機能付き情報処理装置の各々で任意に選ぶことができる。従ってある単位、例えばバスで取り扱うビット単位（８ビット、１６ビット、３２ビット、６４ビット、１２８ビット等）や仮想記憶で用いられるページ単位、キャッシュメモリのデータを交換するビット単位等に関連させて暗号化のブロックを選択することで効率的な暗号化及び復号を行うことができる。
【００９７】
上記の例では、暗号化の鍵と復号の鍵とを選択する際に、同じ鍵テーブルを用いたため、暗号鍵と復号鍵が同一となっているが、暗号化の鍵テーブルと復号の鍵テーブルとを個別に設けることにより、暗号鍵と復号鍵とを個別のものにすることができる。これにより、暗号化の際に用いた暗号鍵と異なる復号鍵により復号するような暗号化／復号アルゴリズムを利用することもできる。
【００９８】
また、上記の例では抜き出した数ビットから暗号鍵を選択する時に鍵テーブルを用いたが、抜き出した数ビットをある特定の関数に入力し、その出力値を暗号鍵として用いてもよく、そのようにすれば鍵テーブルを持つ必要がなくなる。勿論抜き出した特定の数ビットそのものを暗号鍵としてもよい。
【００９９】
以上のような方法により、暗号鍵及び復号鍵の選択がデータのみに依存しており、保護の対象であるデータの一部あるいは全部から暗号鍵を導出することができるため、特にアドレスに依存せずに、複数の暗号鍵でデータを暗号化することができる。その為、ＯＳによる複雑なアドレス管理が行われている場合でも、ＯＳに依存することなく複数の暗号鍵を管理することができる。つまり、ＯＳを改ざんすることにより秘匿データを盗用するという攻撃に対して、有効な防御を実現することができる。
【０１００】
また、暗号化に複数の暗号鍵を使用しているので、計算量の少ない暗号化方法（例えばＸＯＲなど）を用いても十分な暗号強度を得ることができ、暗号化及び復号のプロセスがデータの処理速度に及ぼす影響を少なくすることができる。従って、メモリ中のデータを逐次復号しながらプログラムを実行する場合でも十分な実行速度と暗号強度を実現することができる。これにより、常にメインメモリ中に常駐するようなＯＳ自身を防御することも可能である。
【０１０１】
なお、上記で説明した本発明の各構成要素は、ハードウェアの回路で構成することができる。その場合、暗号鍵生成手段は暗号鍵生成回路であり、復号鍵生成手段は復号鍵生成回路であり、暗号化手段は暗号化回路であり、記憶手段はメモリであり、復号手段は復号回路であり、処理手段はＡＬＵ（Arithmetic and Logic Unit)であり、制御手段はＭＰＵ（Micro Processing Unit ）である。
【０１０２】
ところで、以上の例は、データの属性ごとに異なる暗号／復号鍵を使用することにより暗号の強度を高めているが、プログラムの実行中に鍵と暗号化／復号アルゴリズムとを随時変更することにより、暗号強度を高めることもできる。このような例を以下に示す。
【０１０３】
図２３は暗号化／復号アルゴリズムを随時変更するソフトウェア保護機能付き情報処理装置のハードウェア構成例を示すブロック図である。この情報処理装置は、図４に示したソフトウェア保護機能付き情報処理装置と同様の構成として、情報処理手段１５１、流通ソフト復号手段１５２、暗号化手段１５３、復号手段１５４、及び鍵供給手段１５５を有している。但し、この例における暗号化手段１５３と復号手段１５４とは、暗号化又は復号のアルゴリズムを切り換えることができる点で、図４に示した暗号化手段５３と復号手段５４と異なる。
【０１０４】
この例では、さらに、暗号化／復号アルゴリズムのプログラムを供給するアルゴリズム供給手段１５６が設けられている。そして、図４で示した鍵選択手段５５に代わり、暗号化手段１５３と復号手段１５４とに供給すべき鍵とアルゴリズムとを選択する暗号化方式選択手段１５７が設けられている。
【０１０５】
システムバス１６０、記憶手段１６１、Ｉ／Ｏインタフェース（Ｉ／Ｏ）１６２、ペリフェラルバス１６３、イーサネット・コントローラ１６４、ＣＤ−ＲＯＭドライブ１６５、及びハードディスク１６６の構成は、図４の例と同じである。
【０１０６】
以上の構成において、まず、予め決められた暗号化方式で暗号化されたデータがネットワークやＣＤ−ＲＯＭ等によってソフトウェア提供者から提供される。この時の暗号化方式には、汎用的で暗号強度の高いものを用いる。例えば、ＤＥＳ等を用いる。一方、このデータを暗号化した際の暗号鍵（この例では、同一の鍵で暗号化／復号が行われる）は、ＲＳＡのような暗号によってこの情報処理装置の公開鍵で暗号化する。従って、ユーザには、暗号強度の高い暗号化方式で暗号化されたデータと、公開鍵で暗号化された暗号鍵とのペアが提供される。
【０１０７】
ユーザは、暗号化されたデータと公開鍵で暗号化された暗号鍵とを、Ｉ／Ｏ１６２を解して流通ソフト復号手段１５２に送る。流通ソフト復号手段１５２は、先ず、公開鍵で暗号化された暗号鍵を、自己の持っている秘密鍵で復号する。そして、復号された暗号鍵を用いてデータを復号する。復号されたデータは、直接暗号化手段１５３に送られる。暗号化手段１５３は、暗号化方式選択手段１５７が選択した暗号化アルゴリズム及び暗号鍵により、データを暗号化する。暗号化されたデータは記憶手段１６１に格納される。記憶手段１６１に格納されたデータは、非公開の暗号化アルゴリズム及び暗号鍵で暗号化されているため、ユーザ自信も、この装置での実行以外の目的で記憶手段１６１内のデータにアクセスすることはできない。
【０１０８】
記憶手段１６１に格納したデータ内の命令を実行する際には、先ず、復号手段１５４が暗号化方式選択手段１５７から供給された復号アルゴリズム及び復号鍵で、データを復号する。復号されたデータが情報処理手段１５１に送られ、情報処理手段１５１がそのデータを実行する。なお、情報処理手段１５１が実行した結果を記憶手段１６１に書き出す際には、そのデータは、暗号化手段１５３により暗号化された後、記憶手段１６１に格納される。この時、情報処理手段１５１が実行した後のデータを、別の暗号化方式で暗号化して記憶手段１６１に格納することができる。暗号化方式の変更処理は、暗号化方式選択手段１５７が行う。
【０１０９】
以下に、暗号化方式選択手段１５７における暗号化方式の変更方法の一例を説明する。
図２４は暗号化方式の変更例を示す図である。図６では再暗号化手段によって再暗号化が行われたが、この例では、暗号化方式選択手段が同様の働きをすることとする。また、簡単にするために暗号化と復号に同一のアルゴリズムと鍵を用いるものとする。
【０１１０】
（Ａ）はアルゴリズムの変更前の状態を示す図である。この図において、鍵供給手段１５５は、「ＫＡ」、「ＫＢ」、「ＫＣ」の３つの鍵１５５ａ〜１５５ｃを供給している。アルゴリズム供給手段１５６は、「Ａ」、「Ｂ」、「Ｃ」の３つのアルゴリズム１５６ａ〜１５６ｃを供給している。暗号化方式選択手段１５７は、暗号化あるいは復号を行う際に、鍵供給手段１５５とアルゴリズム供給手段１５６との中の鍵とアルゴリズムとから、その都度必要なものを選択し、暗号化手段１５３と復号手段１５４とに供給する。この図では、暗号化手段１５３と復号手段１５４との双方に、アルゴリズム「Ｃ」と鍵「ＫＣ」とが供給されている（以下、このような組み合わせの暗号化方式を、「暗号化方式ＣＣ」と呼ぶ）。
【０１１１】
この状態において装置が動作している場合に、所定のタイミングで暗号化方式の変更が行われる。変更のタイミングとしては、例えば、その暗号化方式が使われだしてから一定の時間が経過した時などである。ここでは、アルゴリズムを「Ａ」（暗号化方式ＡＣ）に変更するものとする。
【０１１２】
（Ｂ）はアルゴリズムの変更指令出力後の状態を示す図である。変更指令が出力されると、暗号化方式選択手段１５７は、アルゴリズム「Ａ」を暗号化手段１５３に渡す。復号手段１５４には、引き続きアルゴリズム「Ｃ」を渡す。この状態で、記憶手段１６１内に暗号化方式ＣＣで暗号化されているプログラムを、復号手段１５４が復号する。復号されたプログラムは暗号化手段１５３に送られる。暗号化手段１５３は、暗号化方式ＡＣにより、受け取ったプログラムを暗号化する。このような処理を、記憶手段１６１内の暗号化方式ＣＣで暗号化されているプログラム全てについて実行する。再暗号化が終了したら、暗号化方式選択手段１５７は、復号手段１５４に供給するアルゴリズムを「Ａ」に変更する。
【０１１３】
（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。この状態では、暗号化手段１５３と復号手段１５４とには、共に、アルゴリズム「Ａ」と鍵「Ｃ」とが供給されている。以後は、暗号化方式ＡＣにより暗号化されたプログラムの実行と、暗号化方式ＡＣよる暗号化が可能となる。
【０１１４】
これにより、暗号化方式選択手段１５７により暗号化方式と復号方式とをダイナミックに変更することができるため、暗号強度を高くすることができる。
このようなアルゴリズムの変更を可能とするハードウェア構成としては、例えば、暗号化手段１５３及び復号手段１５４をＣＰＵやプログラマブル・ロジックで構成し、アルゴリズム供給手段１５６は、これらの動作（アルゴリズム）を表現する情報であるプログラムで供給することができる。また、暗号化手段１５３と復号手段１５４とをＦＰＧＡ(Field Programable Gate Array)を用いて構成し、アルゴリズム供給手段は、これらの動作（アルゴリズム）を表現する情報としてＦＰＧＡの配線情報を供給することもできる。動作中にでも配線情報を変更することができるＦＰＧＡとしては、米国Ａｔｍｅｌ社のキャッシュ・ロジックがある。このキャッシュ・ロジックは、内部にプログラムを格納するための領域を複数有するＳＲＡＭを備えており、外部からの信号入力により、動作させる領域を切り換えることができる。そのため、高速に配線情報の切り換えが可能である。従って、頻繁に暗号方式の変更を行っても、システムの処理能力を低下させずにすむ。
【０１１５】
また、アルゴリズムに対応させる鍵を、複数の鍵からなる鍵群とすることもできる。図２５は暗号化方式を変更する際に鍵群を選択する例を示す図である。この例では、鍵供給手段１５５０は、「Ａ群」、「Ｂ群」、「Ｃ群」の３つの鍵群１５５１〜１５５３を有している。一方、アルゴリズム供給手段１５６０は、図２３の例と同様に「Ａ」、「Ｂ」、「Ｂ」の３つのアルゴリズム１５６１〜１５６３を有している。暗号化方式選択手段１５７ａは、これらの鍵とアルゴリズムとの中から任意のものを選択し、暗号化手段１５３ａと復号手段１５４ａとに供給している。この図では、暗号化手段１５３ａと復号手段１５４ａとの双方に、アルゴリズム「Ｃ」と「Ｃ群」の鍵群１５５３とが供給されている。
【０１１６】
この場合、１つの鍵群は、ある特定のアドレス領域に適用され、このアドレス領域をさらに細分化したアドレス領域に、個々の鍵を適用する。
次に、アルゴリズム供給手段１５６０が供給するアルゴリズムの内容を変更する場合について説明する。
【０１１７】
図２６は供給するアルゴリズムを変更する際の処理手順を示す図である。（Ａ）はアルゴリズムの変更前の状態を示す図である。この状態は、図２４の（Ａ）の状態と同じである。この例では、「Ｃ」のアルゴリズム１５６ｃの使用を停止して、代わりに「Ｄ」のアルゴリズムを供給する場合について説明する。その場合、「Ｃ」のアルゴリズム１５６ｃの使用を停止する為に、「Ｃ」のアルゴリズム１５６ｃで暗号化されて記憶手段に格納されているプログラムを、他のアルゴリズムにより再暗号化しなければならない。そこで、まず、暗号化方式ＣＣで暗号化されているプログラムを、暗号化方式ＡＣで再暗号化する。
【０１１８】
（Ｂ）はアルゴリズムの変更指令出力後の状態を示す図である。暗号化手段１５３には、「Ａ」のアルゴリズムが供給されている。この状態は、図２４の（Ｂ）と同じである。この状態で、暗号化方式ＣＣで暗号化されているプログラムを、暗号化方式ＡＣで暗号化し直して、記憶手段に格納する。これにより、「Ｃ」のアルゴリズムを別のアルゴリズムに変更することが可能となる。
【０１１９】
（Ｃ）はアルゴリズムを変更後の状態を示す図である。「Ｃ」のアルゴリズムが格納されていた領域には、「Ｄ」のアルゴリズム１５６ｄが格納されている。以後、このアルゴリズム１５６ｄが暗号化手段１５３や復号手段１５４に供給される。
【０１２０】
このようなアルゴリズムの変更は、アルゴリズム登録テーブルを用意しておくことにより容易に実現できる。また、各アルゴリズムに使用期限を設け、期限の超えたアルゴリズムを別のアルゴリズムに変更するように、制御することができる。
【０１２１】
図２７はアルゴリズムの使用時間の経過時にアルゴリズムの変更を行う例を示す図である。アルゴリズム供給手段１５４には、「Ａ」、「Ｂ」、「Ｃ」の３つのアルゴリズムが供給されている。これらのアルゴリズムは、それぞれアルゴリズム・アドレス「０」〜「２」に対応している。アルゴリズム登録テーブル１５８には、「Ａ」〜「Ｚ」のアルゴリズムが登録されている。アルゴリズムを変更する際には、アルゴリズム登録テーブル１５８内のアルゴリズムが、アルゴリズム供給手段１５４に渡される。そして、アルゴリズムを変更するタイミングは、時間管理手段１５９が管理している。
【０１２２】
時間管理手段１５９は、各アルゴリズムのアルゴリズム・アドレス「０」〜「２」に対応して、「アルゴリズム使用期限」、「経過時間」、及び「書き換えフラグ」の情報を管理している。「アルゴリズム使用期限」には、そのアルゴリズムが使用できる制限時間が予め設定されている。「経過時間」には、そのアルゴリズムの使用が開始されてからの経過時間が示されている。「書き換えフラグ」は、経過時間が使用期限を超えたか否かを示すフラグである。通常の値は「０」であり、使用期限を超えるとフラグが立ち、値が「１」になる。
【０１２３】
次に、暗号化方式選択手段によるアルゴリズムの変更とアルゴリズム供給手段によるアルゴリズムの書き換えの処理について説明する。
図２８はアルゴリズム供給手段のアルゴリズムの書き換え処理のフローチャートである。
【０１２４】
〔Ｓ４１〕使用期限を過ぎたアドレスがあるか否かを判断する。使用期限が過ぎたアドレスがあればステップＳ４２に進み、使用期限が過ぎたアドレスがなければこのステップＳ４１を繰り返す。
【０１２５】
〔Ｓ４２〕使用期限が過ぎたアドレスがあった場合には、そのアドレスの書き換えフラグを立てる。
〔Ｓ４３〕フラグが立っているアドレスのアルゴリズムが使用されているか否かを判断する。使用されているか否かの情報は、暗号化方式選択手段１５７から提供される。
【０１２６】
〔Ｓ４４〕使用期限が過ぎたアドレスのアルゴリズムを書き換える。
図２９は暗号化方式選択手段のアルゴリズム切り換え処理のフローチャートである。
〔Ｓ５１〕アルゴリズムの書き換えフラグを読む。
【０１２７】
〔Ｓ５２〕書き換えフラグが立っているアルゴリズム・アドレスがあるか否かを判断する。書き換えフラグが立っているアルゴリズムがあればステップＳ５３に進み、書き換えフラグが立っているアルゴリズムがなければステップＳ５１からの処理を繰り返す。
【０１２８】
〔Ｓ５３〕フラグが立っているアドレスに格納されたアルゴリズムで暗号化されているプログラム又はデータを、フラグが立っていないアドレスのアルゴリズムで暗号化し直す。
【０１２９】
〔Ｓ５４〕対応する全てのプログラムの再暗号化が行われると、フラグが立っているアドレスを使用していない旨をアルゴリズム供給手段１５６に通知する。
アルゴリズム供給手段と暗号化方式選択手段とが以上のような処理を繰り返し行っていることにより、使用期限が過ぎたアルゴリズムが随時検出され、そのアルゴリズムが書き換えられる。しかも、書き換えの対象となったアルゴリズムで暗号化されているプログラムを、他のアルゴリズムにより再暗号化した後に、そのアルゴリズムの書き換えが行われるため、書き換えを行ったことによりトラブルが発生することもない。
【０１３０】
なお、書き換えフラグが立っているにもかかわらず、一定期間アルゴリズムの書き換えが行われなかった場合には、強制的にアルゴリズムを書き換えることもできる。
図３０は強制的なアルゴリズムの書き換えの動作例を示すフローチャートである。この例では、書き換えフラグを立てて１０分の間に必ず鍵の書き換えを行う。
【０１３１】
〔Ｓ６１〕使用期限となったアルゴリズム・アドレスがあるか否かを判断し、使用期限となったアルゴリズム・アドレスがあればステップＳ６２へ進み、なければこのステップを繰り返す。
【０１３２】
〔Ｓ６２〕使用期限となったアルゴリズム・アドレスの書き換えフラグを立てる。
〔Ｓ６３〕フラグが立っているアルゴリズム・アドレスのアルゴリズムが使用されているか否かを判断し、使用されていればステップＳ６４に進み、使用されていなければステップＳ６５に進む。
【０１３３】
〔Ｓ６４〕フラグが立てられてから１０分が経過したか否かを判断し、経過していればステップＳ６５に進み、経過していなければステップＳ６３に進む。
〔Ｓ６５〕使用期限となったアルゴリズム・アドレスのアルゴリズムを書き換え、ステップＳ６１に進む。
【０１３４】
このようにすることで、再暗号化手段が改ざんされて、アルゴリズムの変更を行わなくなってしまった場合でも、アルゴリズムは強制的に書き換えられ、その結果情報処理手段が正常動作しなくなることで、自己破壊的にデータの秘匿性を保つことができる。この例では１０分の間に必ずアルゴリズムの書き換えを行うようにしたが、実際は、システムの使用状況や情報処理手段１の処理能力を勘案して決定するとよい。また、アルゴリズムを強制的に書き換える代わりにＮＭＩを発生させて、システムをリセットしてもよい。
【０１３５】
以上の説明では、暗号／復号鍵を随時変更する場合と、暗号化／復号アルゴリズムを随時変更する場合とを個別に説明したが、鍵とアルゴリズムとの双方を随時変更することもできる。これらを組み合わせた構成にすることにより、いっそうの暗号強度の強化を図ることができる。
【０１３６】
また、図２３に示した構成を保護容器内に収めることにより、データの保護をさらに強化することができる。
図３１は主要部を保護容器に格納したソフトウェアの保護機能付き情報処理装置の例を示す図である。この例は、図２３に示した構成に、単に保護容器１５０を加えたものであるため、同じものには同一の番号を付し説明を省略する。この保護容器１５０には、情報処理手段１５１、流通ソフト復号手段１５２、暗号化手段１５３、復号手段１５４、鍵供給手段１５５、アルゴリズム供給手段１５６、及び暗号化方式選択手段１５７が収納されている。保護容器１５０は、内部に収納した装置に対する外部からのプロービングに対して保護するような仕組みを有する容器である。保護容器１５０はそれが取り外されたり穴をあけられたりした時に内部の動作を停止させたり、秘匿データが読み出されないように消去する機能を有している。これにより、暗号化／復号アルゴリズム、暗号／復号鍵、及び復号されたデータの盗用や改ざんを完全に防ぐことができる。なお、保護容器の具体例は、図２において説明したものと同様である。
【図面の簡単な説明】
【０１３７】
【図１】本実施の形態の基礎となる技術を示す図である。
【図２】ソフトウェアの保護機能付き情報処理装置のハードウェア構成例を示すブロック図である。
【図３】複数の復号手段を有するソフトウェアの保護機能付き情報処理装置のハードウェア構成を示すブロック図である。
【図４】図２と図３の情報処理装置を融合させたソフトウェアの保護機能付き情報処理装置のハードウェア構成を示すブロック図である。
【図５】鍵選択手段で鍵群を選択する例の詳細を示す図である。
【図６】再暗号化手段による鍵の変更方法の第１の例を示す図である。（Ａ）は鍵の変更前の状態を示す図であり、（Ｂ）は鍵の変更指令出力後の状態を示す図であり、（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。
【図７】再暗号化手段による鍵の変更方法の第２の例を示す図である。（Ａ）は鍵の変更前の状態を示す図であり、（Ｂ）は鍵の変更指令出力後の状態を示す図であり、（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。
【図８】鍵供給手段内の鍵を変更する場合の例を示す図である。（Ａ）は鍵の変更前の状態を示す図であり、（Ｂ）は鍵の変更指令出力後の状態を示す図であり、（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。
【図９】鍵の生成方式を示す図である。（Ａ）は新たな鍵を作成する方式を示す図であり、（Ｂ）は鍵テーブルを利用する方式を示す図である。
【図１０】識別子を用いた鍵の選択方式を示す図である。（Ａ）は鍵の変更前の状態を示す図であり、（Ｂ）は鍵の変更後の状態を示す図である。
【図１１】時間管理テーブルを示す図である。
【図１２】時間管理手段の処理手順を示すフローチャートである。
【図１３】再暗号化手段の処理手順を示すフローチャートである。
【図１４】時間管理手段の鍵書き換えに関する他の動作例を示すフローチャートである。
【図１５】ページ番号と鍵識別子の対応を管理する鍵管理テーブルの例を示す図である。
【図１６】鍵選択手段内のＴＬＢを示す図である。
【図１７】ＭＭＵ内のＴＬＢを示す図である。
【図１８】インテル社製のＭＰＵであるｉ８０２８６のタスク状態セグメントに鍵アドレスの情報を付加した例を示す図である。
【図１９】データの内容による鍵管理の暗号化の処理手順を示すフローチャートである。
【図２０】図１９の各ステップの状態遷移図である。（Ａ）はステップＳ２１の状態を示す図であり、（Ｂ）はステップＳ２２の状態を示す図であり、（Ｃ）はステップＳ２３の状態を示す図であり、（Ｄ）はステップＳ２４の状態を示す図であり、（Ｅ）は、ステップＳ２５の状態を示す図である。
【図２１】データの内容による鍵管理の復号の処理手順を示すフローチャートである。
【図２２】図２１の各ステップの状態遷移図である。（Ａ）はステップＳ３１の状態を示す図であり、（Ｂ）はステップＳ３２の状態を示す図であり、（Ｃ）はステップＳ３３の状態を示す図であり、（Ｄ）はステップＳ３４の状態を示す図であり、（Ｅ）は、ステップＳ３５の状態を示す図である。
【図２３】暗号化／復号アルゴリズムを随時変更するソフトウェア保護機能付き情報処理装置のハードウェア構成例を示すブロック図である。
【図２４】暗号化方式の変更例を示す図である。（Ａ）はアルゴリズムの変更前の状態を示す図であり、（Ｂ）はアルゴリズムの変更指令出力後の状態を示す図であり、（Ｃ）は再暗号化が必要な全てのデータの再暗号化が終了した後の状態を示す図である。
【図２５】暗号化方式を変更する際に鍵群を選択する例を示す図である。
【図２６】供給するアルゴリズムを変更する際の処理手順を示す図である。（Ａ）はアルゴリズムの変更前の状態を示す図であり、（Ｂ）はアルゴリズムの変更指令出力後の状態を示す図であり、（Ｃ）はアルゴリズムを変更後の状態を示す図である。
【図２７】アルゴリズムの使用時間の経過時にアルゴリズムの変更を行う例を示す図である。
【図２８】アルゴリズム供給手段のアルゴリズムの書き換え処理のフローチャートである。
【図２９】暗号化方式選択手段のアルゴリズム切り換え処理のフローチャートである。
【図３０】強制的なアルゴリズムの書き換え処理の動作例を示すフローチャートである。
【図３１】主要部を保護容器に格納したソフトウェアの保護機能付き情報処理装置の例を示す図である。
【図３２】従来のソフトウェアの保護を図った情報処理装置のブロック図である。
【符号の説明】
【０１３８】
１  暗号鍵生成手段
１ａ  暗号鍵
２  復号鍵生成手段
２ａ  復号鍵
３  暗号化手段
４  記憶手段
４ａ  暗号データ
５  復号手段
６  処理手段
７  制御手段
１０  安全保護容器
１１  情報処理手段
１２  暗号化手段
１３  復号手段
１４  鍵選択手段
１５  鍵供給手段
２０  システムバス
２１  記憶手段
２２  Ｉ／Ｏインターフェース
２３  ペリフェラルバス
２４  イーサネット・コントローラ
２５  ＣＤ−ＲＯＭドライブ
２６  ハードディスク
【図１】
2005094790.tif 000003
【図２】
2005094790.tif 000004
【図３】
2005094790.tif 000005
【図４】
2005094790.tif 000006
【図５】
2005094790.tif 000007
【図６】
2005094790.tif 000008
【図７】
2005094790.tif 000009
【図８】
2005094790.tif 000010
【図９】
2005094790.tif 000011
【図１０】
2005094790.tif 000012
【図１１】
2005094790.tif 000013
【図１２】
2005094790.tif 000014
【図１３】
2005094790.tif 000015
【図１４】
2005094790.tif 000016
【図１５】
2005094790.tif 000017
【図１６】
2005094790.tif 000018
【図１７】
2005094790.tif 000019
【図１８】
2005094790.tif 000020
【図１９】
2005094790.tif 000021
【図２０】
2005094790.tif 000022
【図２１】
2005094790.tif 000023
【図２２】
2005094790.tif 000024
【図２３】
2005094790.tif 000025
【図２４】
2005094790.tif 000026
【図２５】
2005094790.tif 000027
【図２６】
2005094790.tif 000028
【図２７】
2005094790.tif 000029
【図２８】
2005094790.tif 000030
【図２９】
2005094790.tif 000031
【図３０】
2005094790.tif 000032
【図３１】
2005094790.tif 000033
【図３２】
2005094790.tif 000034