(57)【要約】【課題】プログラムの実行時に、不正な監視や改竄を防止することができるデータ処理装置、およびデータ処理方法を提供する。【解決手段】セキュアな状態で内部を保護するハードウェアモジュールとしてのＩＣチップ１３内に、暗号化されたプログラム（暗号プログラム）Ｄ＿Ｐを、暗号プログラムＤ＿Ｐの実行開始指示に応じて入力するインタフェース（Ｉ／Ｆ）１３１と、Ｉ／Ｆ１３１が入力した暗号プログラムＤ＿Ｐを復号する暗号・復号器１３２と、暗号・復号器１３２が復号したプログラムを、キャッシュするキャッシュメモリ１３５と、キャッシュメモリ１３５内のプログラム（平文）をセキュアな状態で実行するＣＰＵ１３６とを設けたので、プログラムの実行時に、不正な監視や改竄を防止することができるデータ処理装置、およびデータ処理方法を提供することができる。【選択図】  図１
2004280678.tif 000002
【特許請求の範囲】
【請求項１】
暗号化されたプログラムを、当該プログラムの実行指示に応じて入力するインタフェースと、
前記インタフェースが入力した前記暗号化されたプログラムを復号する復号手段と、
前記復号手段で復号された前記プログラムをセキュアな状態に保護する保護手段と、
前記復号手段で復号され前記保護手段でセキュアな状態に保護された前記プログラムを実行する実行手段と
を有するデータ処理装置。
【請求項２】
前記保護手段は、前記復号手段で復号された前記プログラムを、不正な監視または改竄から保護する
請求項１に記載のデータ処理装置。
【請求項３】
前記保護手段は、前記インタフェース、前記復号手段、および前記実行手段を内部に有するハードウェアモジュールであり、
前記ハードウェアモジュールは、当該ハードウェアモジュールの内部の前記プログラムおよび前記プログラムの動作を、当該ハードウェアモジュールの外部から監視および改竄されることから保護し、
前記インタフェースは、前記ハードウェアモジュールの外部から内部に前記プログラムを入力する
請求項２に記載のデータ処理装置。
【請求項４】
前記復号手段は、所定の暗号鍵で暗号化されたプログラムを、前記所定の暗号鍵に対応する復号鍵で復号し、
前記実行手段は、前記復号手段が復号したプログラムを実行する
請求項１に記載のデータ処理装置。
【請求項５】
前記復号手段は、前記復号処理として、前記所定の暗号鍵に対応する復号鍵に基づいて、前記暗号化されたプログラムの構成要素をブロック単位で配置変換処理を行い、
前記実行手段は、前記復号手段が復号したプログラムを実行する
請求項４に記載のデータ処理装置。
【請求項６】
前記ハードウェアモジュールは、乱数を生成する乱数生成手段を含み、
前記実行手段は、前記乱数生成手段が生成した乱数に基づいて前記暗号鍵を生成し、当該暗号鍵に基づいてプログラムを、前記ハードウェアモジュール内の暗号化手段に暗号化させる
請求項３に記載のデータ処理装置。
【請求項７】
前記実行手段は、前記プログラムを暗号化する場合に、前記プログラムに不正なウィルスが含まれているか否かを検証処理し、前記検証処理の結果、前記ウィルスが含まれていない場合に、前記暗号鍵生成手段が生成した暗号鍵に基づいて、前記プログラムを暗号化処理を行う
請求項６に記載のデータ処理装置。
【請求項８】
前記実行手段は、前記プログラムを実行している過程で生成するデータを、前記ハードウェアモジュール内の暗号化手段で暗号化し一時的に、前記ハードウェアモジュールの外部の記憶手段に記憶させる
請求項３に記載のデータ処理装置。
【請求項９】
暗号化されたプログラムを、当該プログラムの実行指示に応じて入力する第１の工程と、
前記第１の工程で入力した前記暗号化されたプログラムを復号する第２の工程と、
前記第２の工程で復号された前記プログラムをセキュアな状態に保護して前記プログラムを実行する第３の工程と
を有するデータ処理方法。
【請求項１０】
前記第３の工程は、前記第２の工程で復号された前記プログラムを前記セキュアな状態として不正な監視または改竄から保護する
請求項９に記載のデータ処理方法。
【請求項１１】
前記第１の工程、前記第２の工程、および前記第３の工程は、ハードウェアモジュール内で実行し、
前記ハードウェアモジュールは、当該ハードウェアモジュールの内部の前記プログラムおよび前記プログラムの動作を、当該ハードウェアモジュールの外部から監視および改竄されることから保護し、前記ハードウェアモジュールの外部から内部に前記プログラムを入力する
請求項９に記載のデータ処理方法。
【請求項１２】
前記第２の工程は、所定の暗号鍵で暗号化されたプログラムを、前記所定の暗号鍵に対応する復号鍵で復号し、
前記第３の工程は、前記第２の工程で復号したプログラムを実行する
請求項９に記載のデータ処理方法。
【請求項１３】
前記第２の工程は、前記復号処理として、前記所定の暗号鍵に対応する復号鍵に基づいて、前記暗号化されたプログラムの構成要素をブロック単位で配置変換処理を行い、
前記第３の工程は、前記第２の工程で復号したプログラムを実行する
請求項１２に記載のデータ処理方法。
【請求項１４】
前記第３の工程は、前記プログラムを実行している過程で生成するデータを、前記ハードウェアモジュール内で暗号化した状態で一時的に、前記ハードウェアモジュールの外部の記憶手段に記憶させる
請求項１１に記載のデータ処理方法。
【請求項１５】
内部のプログラムおよび前記プログラムの動作を、当該ハードウェアモジュールの外部から監視および改竄されることから保護するハードウェアモジュールの内部に、当該ハードウェアモジュールの外部からプログラムを入力する第１の工程と、
前記ハードウェアモジュールの内部で乱数を生成し、当該乱数に基づいて前記暗号鍵を生成する第２の工程と、
前記第２の工程で生成した暗号鍵に基づいて、前記第１の工程で入力したプログラムを、セキュアな状態に保護して前記ハードウェアモジュール内で暗号化し、前記ハードウェアの外部に出力する第３の工程と
を有するデータ処理方法。
【請求項１６】
前記第１の工程は、前記プログラムを暗号化する場合に、前記プログラムに不正なウィルスが含まれているか否かを検証処理し、
前記第３の工程は、前記検証処理の結果、前記ウィルスが含まれていない場合に、前記第２の工程で生成した前記暗号鍵に基づいて前記プログラムを暗号化処理を行う
請求項１５に記載のデータ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばセキュリティの高い情報処理装置、および情報処理方法に関するものである。
【０００２】
【従来の技術】
従来のデータ処理装置では、暗号化されていないプログラム（平文とも言う）やデータを外部メモリに記憶し、ＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ  ）は必要に応じて外部メモリからプログラムを読込み、実行する。
【０００３】
【発明が解決しようとする課題】
しかし、上述した従来のデータ処理装置では、外部メモリに、暗号化されていないプログラムを記憶しているために、例えばプログラムの実行時に外部の悪意者により外部メモリのプログラムの改竄や不正な監視等が行われる等の被害が問題になっている。
【０００４】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、プログラムの実行時に、不正な監視や改竄を防止することができるデータ処理装置、およびデータ処理方法を提供することにある。
【０００５】
【課題を解決するための手段】
前記目的を達成するために、本発明の第１の観点は、暗号化されたプログラムを、当該プログラムの実行指示に応じて入力するインタフェースと、前記インタフェースが入力した前記暗号化されたプログラムを復号する復号手段と、前記復号手段で復号された前記プログラムをセキュアな状態に保護する保護手段と、前記復号手段で復号され前記保護手段でセキュアな状態に保護された前記プログラムを実行する実行手段とを有する。
【０００６】
本発明の第１の観点によれば、インタフェースでは暗号化されたプログラムを、当該プログラムの実行指示に応じて入力する。
復号手段では、インタフェースが入力した暗号化されたプログラムを復号する。
保護手段では、復号手段で復号されたプログラムをセキュアな状態に保護する。
実行手段では、復号手段で復号され保護手段でセキュアな状態に保護されたプログラムを実行する。
【０００７】
さらに、前記目的を達成するために、本発明の第２の観点は、暗号化されたプログラムを、当該プログラムの実行指示に応じて入力する第１の工程と、前記第１の工程で入力した前記暗号化されたプログラムを復号する第２の工程と、前記第２の工程で復号された前記プログラムをセキュアな状態に保護して前記プログラムを実行する第３の工程とを有する。
【０００８】
さらに、前記目的を達成するために、本発明の第３の観点は、内部のプログラムおよび前記プログラムの動作を、当該ハードウェアモジュールの外部から監視および改竄されることから保護するハードウェアモジュールの内部に、当該ハードウェアモジュールの外部からプログラムを入力する第１の工程と、前記ハードウェアモジュールの内部で乱数を生成し、当該乱数に基づいて前記暗号鍵を生成する第２の工程と、前記第２の工程で生成した暗号鍵に基づいて、前記第１の工程で入力したプログラムを、セキュアな状態に保護して前記ハードウェアモジュール内で暗号化し、前記ハードウェアの外部に出力する第３の工程とを有する。
【０００９】
【発明の実施の形態】
図１は、本発明に係るデータ処理装置の第１実施形態を示す機能ブロック図である。
データ処理装置１は、例えば図１に示すように、通信（インタフェース：Ｉ／Ｆ）１１、外部メモリ１２、およびチップ１３を有する。
通信Ｉ／Ｆ１１、外部メモリ１２、およびチップ１３は、バスＢＳにより接続されている。
【００１０】
通信Ｉ／Ｆ１１は、チップ１３の制御により、例えば通信ネットワーク２を介して端末装置３と通信を行う。
外部メモリ１２は、例えばチップ１３により参照されるデータやプログラム等が暗号化された状態で記憶する。その暗号化されたデータやプログラムは、必要に応じてチップ１３に読出され参照される。
外部メモリ１２は、例えば１次記憶装置としてＲＡＭ（Ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１２１、２次記憶装置としてハードディスクドライブ（ＨＤＤ）１２２等を有する。
【００１１】
ＲＡＭ１２１は、例えばチップ１３のワークスペース（作業領域）として用いられる。
ＲＡＭ１２１は、例えばチップ１３が所定のプログラムを実行する際に、所定のデータを暗号化した暗号文Ｄ＿Ｅを一時記憶する。その暗号文Ｄ＿Ｅは、チップ１３により読出しおよび書込みが行われる。
【００１２】
ハードディスクドライブ（ＨＤＤ）１２２は、例えば暗号化されたプログラム（暗号化プログラム）Ｄ＿Ｐを記憶する。
暗号プログラムＤ＿Ｐは、実行時には、外部ＲＡＭ１２１へ複写されたのちにチップ１３により読出され復号されて、実行される。
【００１３】
チップ１３（Ｅｎｃ．ＣＰＵ：Ｅｎｃｒｙｐｔｅｄ  ｃｏｄｅ  ＣＰＵとも言う）は、例えば図１に示すように、インタフェース（Ｉ／Ｆ）１３１、暗号・復号器１３２、乱数発生器１３３、不揮発性メモリ１３４、キャッシュメモリ１３５、およびＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ  ）１３６を有する。
インタフェース（Ｉ／Ｆ）１３１は本発明に係るインタフェースに相当する。暗号・復号器１３２は本発明に係る復号手段および暗号手段に相当する。ＣＰＵ１３６は本発明に係る実行手段に相当する。
【００１４】
チップ１３は、例えばＩＣ（Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ：集積回路）チップで構成され、チップ１３外に保存されている暗号化されたプログラムＤ＿Ｐを暗号化されたままでチップ１３内に読み込むことが可能で、読み込んだ暗号化プログラムＤ＿Ｐを外部に読まれることなくチップ内で復号しプログラムを実行することが可能である。
【００１５】
また、チップ１３は、ハードウェアモジュールであり、内部のプログラムおよびプログラムの動作を、ハードウェアモジュールの外部から監視および改竄されることから保護する。例えば詳細には、暗号・復号器１３２で復号されたプログラムを、不正な監視または改竄から保護する。
チップ１３は、本発明に係る保護手段に相当する。
【００１６】
また、Ｉ／Ｆ１３１、暗号・復号器１３２、乱数発生器１３３、不揮発性メモリ１３４、キャッシュメモリ１３５、およびＣＰＵ１３６は、セキュアな状態で、ハードウェアモジュール（チップ１３）の内部に保持されている。
ここで、セキュアな状態とは、外部から不正にデータの監視または改竄を防止し、データが保護された状態を言う。
【００１７】
インタフェース（Ｉ／Ｆ）１３１は、チップ１３の外部から暗号化プログラムＤ＿Ｐを、当該暗号化プログラムＤ＿Ｐを実行時に、実行指示に応じてチップ１３の内部に入力する。
詳細には、例えばＩ／Ｆ１３１は、ＣＰＵ１３６からの実行指示を示す信号Ｓ１３６に応じて、暗号化プログラムＤ＿Ｐを外部メモリ１２から読出し、暗号・復号器１３２に出力する。
【００１８】
暗号・復号器１３２は、暗号処理および復号処理を行う。
例えば暗号・復号器１３２は、Ｉ／Ｆ１３１が入力した暗号化プログラムＤ＿Ｐを復号して平文Ｄ＿Ｄを生成しキャッシュメモリ１３５に出力する。
【００１９】
詳細には、暗号・復号器１３２は、所定の暗号鍵ｋで暗号化された暗号化プログラムＤ＿Ｐを、所定の暗号鍵ｋに対応する復号鍵、例えば不揮発性メモリ１３４が記憶する秘密鍵ｋに基づいて、暗号化プログラムＤ＿Ｐを復号して平文Ｄ＿Ｄを生成する。
例えば、暗号・復号器１３２は、共通鍵方式のブロック暗号の暗号化・復号化の機能を有する。
【００２０】
また、暗号・復号器１３２は、暗号化されていないプログラムＰを、所定の暗号鍵ｋ、例えば不揮発性メモリ１３４が記憶する秘密鍵ｋに基づいて暗号化処理し、暗号文Ｄ＿Ｅを生成する。
【００２１】
図２（ａ）は、図１に示したデータ処理装置の暗号化処理の一具体例を説明するための図、図２（ｂ）は図１に示したデータ処理装置の復号処理の一具体例を説明するための図である。
【００２２】
暗号・復号器１３２は、詳細には暗号処理として、所定の暗号鍵に基づいて暗号化されていないプログラム（平文）の構成要素をブロック単位で配置変換処理を行う。
例えば暗号・復号器１３２は、暗号化処理に関して図２（ａ）に示すように、回転演算器（ＲＯＴ）１３２１および排他的論理和器１３２２を含む。
【００２３】
回転演算器１３２１は、例えば不揮発性メモリ１３４が記憶する鍵ｋに基づいて鍵ｋのうちの任意の数ビットで決まる量だけ、Ｉ／Ｆ１３１が読込んだプログラム（例えばブロック単位毎で処理を行う）を、ビットローテーション処理を行い信号Ｓ１３２１として排他的論理和器１３２２に出力する。
排他的論理和器１３２２は、回転演算器１３２１から出力された信号Ｓ１３２１と、鍵Ｋの各ビットを排他的論理和の演算処理を行い、暗号文Ｄ＿Ｅとして出力する。
【００２４】
また、暗号・復号器１３２は、復号処理として所定の暗号鍵に対応する復号鍵に基づいて暗号化されたプログラムの構成要素をブロック単位で配置変換処理を行う。
【００２５】
暗号・復号器１３２は、例えば図２（ｂ）に示すように、排他的論理和器１３２３および逆回転演算器（逆ＲＯＴ）１３２４を含む。
排他的論理和器１３２３は、例えば不揮発性メモリ１３４が記憶する鍵ｋに基づいて、鍵ｋの各ビットと暗号文Ｄ＿Ｅを排他的論理和の演算処理を行い信号Ｓ１３２３として、逆回転演算器１３２４に出力する。
逆回転演算器１３２４は、鍵ｋに基づいて鍵ｋのうちの任意の数ビットで決まる量だけ、信号Ｓ１３２３としての演算処理された暗号文Ｄ＿Ｅを逆ローテーション処理を行い、平文Ｄ＿Ｄとして出力する。
【００２６】
乱数発生器１３３は、例えばＣＰＵ１３６の制御により乱数を生成し、乱数に基づいて暗号鍵ｋを生成し、不揮発性メモリ１３４に記憶させる。
【００２７】
不揮発性メモリ１３４は、乱数発生器１３３が生成した乱数に基づく秘密鍵ｋを、例えば秘密鍵ｋを格納する為の決められた専用領域に記憶する。
秘密鍵ｋは、暗号・復号器１３２により読出され、暗号処理および復号処理に用いられる。この秘密鍵ｋは、共通鍵方式のブロック暗号の為の鍵であって、チップ１３毎に異なる。
ＣＰＵ１３６は、例えば製造時には不揮発性メモリ１３４内の専用領域のデータは全て０としておき、最初にチップ１３を起動時にその内容をチェックし、全て０の場合は乱数発生器１３３を用いて秘密鍵ｋとなる乱数を作成し保存する。
【００２８】
キャッシュメモリ１３５は、暗号・復号器１３２が暗号プログラムＤ＿Ｐを復号した平文Ｄ＿Ｄを記憶するキャッシュメモリであり、内部のデータがＣＰＵ１３６の制御により読出しおよび書込みが行われる。
【００２９】
ＣＰＵ１３６は、少なくとも暗号・復号器で復号されチップ１３内でセキュアな状態に保護された暗号プログラムＤ＿Ｐを実行する。
この際、ＣＰＵ１３６は、セキュアな状態として、外部から不正にデータの監視または改竄を防止し、データが保護された状態で、暗号・復号器１３２が復号した暗号プログラムＤ＿Ｐを実行する。
また、ＣＰＵ１３６は、暗号プログラムＤ＿Ｐを実行する場合には、実行指示を示す信号Ｓ１３６をインタフェース１３１に出力する。
【００３０】
また、ＣＰＵ１３６は、プログラムをインストールする場合には、乱数発生器１３３が生成した乱数に基づいて暗号鍵ｋを生成し、暗号・復号器１３２に暗号鍵ｋに基づいてプログラムを暗号化させる。
また、ＣＰＵ１３６は、プログラムを暗号化させる場合に、プログラムに不正なウィルスが含まれているか否かを検証処理し、検証処理の結果、ウィルスが含まれていない場合に、暗号・復号器１３２に、暗号鍵ｋに基づいてプログラムを暗号化処理を行わせる。
【００３１】
図３は、図１に示したデータ処理装置の動作を説明するためのフローチャートである。データ処理装置１の動作、特に復号処理に関して図３を参照しながら、チップ１３の処理を中心に説明する。
【００３２】
ＣＰＵ１３６は、例えばプログラム実行時に、暗号プログラムＤ＿Ｐを外部ＲＡＭ１２１へ複写する。
また、ＣＰＵ１３６は、ブロック暗号の対象範囲に従ってプリフェッチ対象範囲を決定し、ブロック暗号のサイズ（１ブロック）を１単位としてフェッチする。
詳細には、例えばインタフェース（Ｉ／Ｆ）１３１は、ＣＰＵ１３６からの実行指示を示す信号Ｓ１３６に応じて、外部ＲＡＭ１２１が記憶する暗号化プログラムＤ＿Ｐを、当該プログラムＤ＿Ｐを実行時に入力（プリフェッチ）する（ＳＴ１）。
【００３３】
暗号・復号器１３２では、不揮発性メモリ１３４が記憶する秘密鍵ｋを読出し（ＳＴ２）、Ｉ／Ｆ１３１から入力された暗号化プログラムＤ＿Ｐを、秘密鍵ｋに基づいて、例えば図２に示すよう復号処理を行い平文Ｄ＿Ｄを生成し、キャッシュメモリ１３５に出力する（ＳＴ３）。
【００３４】
ＣＰＵ１３６では、キャッシュメモリ１３５にフェッチ（記憶）されたプログラムの平文Ｄ＿Ｄを、セキュアな状態で実行し（ＳＴ４）、プログラム終了までステップＳＴ１〜４を繰返す。
【００３５】
また、ＣＰＵ１３６は、プログラムを実行している過程で生成するデータを、チップ１３内の暗号・復号器１３２で暗号化した状態で一時的に、チップ１３の外部の外部メモリ１２に記憶させ、プログラムの実行に応じて読出し、暗号・復号器１３２で復号して用いる。
【００３６】
より詳細には、チップ１３では、例えばＨＤＤ１２２等の２次記憶装置に保存された暗号プログラムＤ＿Ｐが、ＯＳ（オペレーティングシステム）によりＲＡＭ１２１等の１次記憶装置へ呼び出され、ＯＳはＲＡＭ１２１上の仮想アドレス空間へ配置する。
【００３７】
チップ１３では、外部メモリ１２上の仮想アドレス空間へ配置された、暗号化プログラムＤ＿Ｐを、ブロック暗号の対象範囲に従ってプリフェッチ対象範囲を決定し、ブロック暗号のサイズ（１ブロック）を１単位としてフェッチする。
ここで、１ブロックだけをプリフェッチするようにすると、必要な実行コードがそのブロックの最も後方に当たる場合に効率が非常に悪くなるため、理想的な実装では、２ブロック以上をフェッチするようにする。
こうしてブロック単位でフェッチされたデータは、ブロックごとに暗号・復号器１３２で復号され、平文に戻された実行コードがキャッシュメモリ１３５上へ展開される。
【００３８】
チップ１３内のＣＰＵ１３６は、キャッシュメモリ１３５上の実行コードを参照してプログラムを実行する。
以後、プログラムの実行内容に従い、必要なコードがＲＡＭ１２１上で暗号化されたままの状態でチップ１３内に取り込まれ、プログラムが進行していく。
【００３９】
図４は、図１に示したデータ処理装置の動作を説明するためのフローチャートである。データ処理装置１の動作、特にプログラムのインストールに係る動作を、図４を参照しながら、チップ１３の処理を中心に説明する。
【００４０】
チップ１３では、プログラムを外部メモリ１２にインストールする際に、例えば不正なプログラムのインストールを防止するために、ユーザ（通常は管理者）の認証処理を行い、正常に認証された場合にインストール処理を行い、認証が適切に行われない場合にはインストール処理を終了する（ＳＴ１１）。
例えば、ＣＰＵ１３６は認証処理として予め不揮発性メモリに設定したユーザ名やパスワード等により認証処理を行う。
【００４１】
ステップＳＴ１１において、正常に認証が行われた場合に、チップ１３では、インストールするプログラムのチェックを行う（ＳＴ１２）。例えばＣＰＵ１３６は外部メモリ１２２に記憶したウィルスチェックプログラムを実行し、インストールするプログラムのウィルスチェックを行い、不正なウィルスが含まれているか否かを検証処理する（ＳＴ１２）。
【００４２】
ステップＳＴ１２の検証処理の結果、インストールしても問題が無いと判別した場合、例えばウィルスが含まれていないと判別した場合には、ＣＰＵ１３６は、乱数発生器１３３が生成した乱数に基づいて暗号鍵ｋを生成して（ＳＴ１３）不揮発性メモリ１３４に記憶してある暗号鍵ｋに基づいてプログラムを暗号・復号器１３２に暗号化させ（ＳＴ１４）、暗号プログラムＤ＿Ｐを生成する。
例えば暗号化処理としては、例えば図２に示すように、所定の暗号鍵に対応する復号鍵に基づいて、暗号化されたプログラムの構成要素をブロック単位で配置変換処理を行う。
【００４３】
ＣＰＵ１３６は、暗号化したプログラムＤ＿ＰをＩ／Ｆ１３１およびバスＢＳを介して、外部メモリ１２１、例えば詳細にはＨＤＤ１２２に記憶する（ＳＴ１５）。
【００４４】
以上説明したように、セキュアな状態で内部を保護するハードウェアモジュールとしてのＩＣチップ１３内に、暗号化されたプログラム（暗号プログラム）Ｄ＿Ｐを、暗号プログラムＤ＿Ｐの実行指示に応じて入力するインタフェース（Ｉ／Ｆ）１３１と、Ｉ／Ｆ１３１が入力した暗号プログラムＤ＿Ｐを復号する暗号・復号器１３２と、暗号・復号器１３２が復号したプログラムを、キャッシュするキャッシュメモリ１３５と、キャッシュメモリ１３５内のプログラム（平文）をセキュアな状態で実行するＣＰＵ１３６とを設けたので、プログラムの実行時に、不正な監視や改竄を防止することができるデータ処理装置、およびデータ処理方法を提供することができる。
【００４５】
また、チップ１３内部の乱数発生器により作成された各チップ毎に独自であることを特徴とする暗号鍵ｋを用いた暗号化・復号化を暗号・復号器１３２で行うことにより、例えばＤＥＳ（Ｄａｔａ  ｅｎｃｒｙｐｔｉｏｎ  ｓｔａｎｄａｒｄ）暗号処理や、公開鍵方式による暗号等のような高度で複雑な暗号処理を行う必要がなく、乱数である鍵ｋとの排他的論理和やローテーション処理といった、計算量が圧倒的に少ない高速な処理だけで十分な強度が得られ、ＣＰＵとしての演算実行速度にほとんど影響を与えない実装が可能となる。
【００４６】
また、ＣＰＵ１３は、プログラムのインストール時に、認証処理を行い、さらにウィルス等の不正な実行コードを含むプログラムか否かを検証処理を行った後、暗号化処理を行い外部メモリ１２にインストールするので、例えば悪意を持った攻撃者が攻撃用実行コードを暗号化した上でトロイの木馬として設定することができない。
【００４７】
また、チップ１３内に乱数発生器１３３を設け、乱数に基づいてチップ１３固有の鍵ｋを生成したので、例えば悪意のある攻撃者が端末装置３で他のチップを用いて暗号プログラム生成し、通信ネットワーク２を介して外部メモリ１２に記憶させたとしても、チップＣＰＵ１３６はその悪意のある暗号化処理されたプログラを実行することがなく、セキュリティが高い。
【００４８】
また、例えば悪意のある攻撃者が、端末装置３から通信ネットワーク２を介して、バッファオーバーフロー（Ｂｕｆｆｅｒ  ｏｖｅｒ  ｆｌｏｗ）と呼ばれるソフトウェアのバグを利用して、悪意のある実行コードを、外部メモリ１２に送りつけた場合であっても、本実施形態に係る外部メモリ１２にはプログラムが暗号化されており、ＣＰＵ１３６は暗号・復号器１３２で復号してから実行するので、悪意のある実行コードを実行しないのでセキュリティが高い。
【００４９】
つまり詳細には、攻撃者がＢｕｆｆｅｒ  ｏｖｅｒ  ｆｌｏｗ攻撃を行う為には、バグを持つソフトウェアのスタック上に攻撃コードを書き込む必要があるが、チップ１３では、外部メモリ１２上の実行コードが暗号化されているため、攻撃者は自分の攻撃用コードを各チップ１３ごとの秘密鍵で同様に暗号化しなければならない。従って、攻撃者は、例えばインストール時に使用権限を奪うことから始めなければならずセキュリティが高い。
また、例えば不正なインストールが試みられた場合でも、ブロック暗号という特性上、スタック上に貼り付けるようなソフトウェアのバイト単位の”部品”を作成することは難しい。
【００５０】
本実施形態ではプログラムをチップ１３で動作させるには、インストール処理を行い暗号化しておく必要があり、ハードディスク等へ保存されているプログラムを、攻撃者が意図した物に置き換える場合も同様に困難であり、セキュリティが高い。例えばトロイの木馬のような、単独の攻撃用ソフトウェアを動作させることが難しい。
【００５１】
このため、例えば電子メールに添付されたウィルスに対して非常に強力にセキュリティが高い。これはウィルスは、まず自分自身を起動させるためには、電子メールソフトの脆弱性（主にＢｕｆｆｅｒ  ｏｖｅｒ  ｆｌｏｗ）に取り入りプロセスを乗っ取ってしまうか、添付ファイルを開いてもらうことで自分自身を起動させる。
しかし、本実施形態に係るチップ１３でウィルスが活動するためには、ウィルスが侵入した段階でウィルス自身がチップ１３の鍵ｋで暗号化されていなければならないが、秘密鍵ｋはチップ１３外部に漏れない。このためウィルスに対して、特に不特定多数を狙うようなウィルスに対して、セキュリティが高い。
【００５２】
また、チップ１３で実行するプログラムをリバースエンジニアリングにより解析することが困難になる。
例えば、既存ＯＳ等では、例えファイルが暗号化されていても、ソフトウェア実行時には平文コードへ復号されてから実行される。従って、実行中のプロセスをメモリ上から直接モニタリングするようなデバッガソフトを使用すると、暗号化されていない場合と全く変わらずに解析されてしまう。
【００５３】
一方、本実施形態に係るチップ１３は、平文へ復号されるのはチップ１３内のキャッシュメモリ１３５上だけであるから、どのようなデバッガソフトを使用しても、実行コードを平文として読むことができない。
これにより、特に各種の技法を使用しなくても、どのソフトウェアも非常に強度の高い耐タンパソフトウェアとなる。
例えば内部で秘密鍵を取り扱う著作権管理システムのようなソフトウェアでも、その秘密鍵をリバースエンジニアリングにより見つけられてしまう危険性が小さくなる。
【００５４】
また、外部メモリ１２上のプログラムが暗号化されているため、暗号化されたままでの修正が困難であり、このチップ１３を用いたデータ処理装置１上の外部メモリ１２のプログラムを、攻撃者が意図した動作へと内容を変更するような改竄することが難しく、セキュリティが高い。
【００５５】
また、本実施形態に係るチップ１３は、既存ＯＳにあまり手を加えないままで利用できるという大きな利点がある。
本実施形態では、単一の共通鍵による暗号化とすることで、全てのファイルが同じ鍵で暗号化するため、高速に暗号化処理および復号処理を行うことができ、通常のＣＰＵとの違いをＯＳが意識する必要が無く、既存のものと同じファイルフォーマットのままで良い。
例えば、ファイルごとに別の鍵を暗号化に使用しようとすると、ファイル中に鍵を埋め込むか、ファイルの識別子と共に全ての鍵をどこかの記憶領域へ保存する必要があり、実行時にはファイルと鍵を結びつける作業がＯＳに必要になる。
【００５６】
また、チップ１４の暗号・復号器１３２は、計算量の少ないブロック暗号方式を用いているので高速に暗号化処理、復号処理を行うことができる。
また、本実施形態では暗号鍵の中の一部のビットの値に従うビットローテーションの結果と暗号鍵との排他的論理和を行っているので、高速処理が可能である。
この程度の暗号化であっても、攻撃者にとっては暗号化結果と平文との比較ができなければ鍵と暗号アルゴリズムの特定が難しく、攻撃者はネットワーク２を介して端末装置３上で暗号の解読を行わなければならず困難であり、本実施形態に係るチップ１３はセキュリティが高い。
【００５７】
なお、本発明は本実施の形態に限られるものではなく、任意好適な種々の改変が可能である。
本実施形態では共通鍵を用いたが、この形態に限られるものではない。例えば、よりセキュリティの高い公開鍵暗号方式を用いてもよい。
また、本実施形態では、暗号化処理および復号処理に排他論理和器を用いたがこの形態に限られるものではない。例えば、高速に演算処理可能な暗号化および復号処理を行う処理部を設ければ、実行時の処理スピードを高速化することができる。
また、本実施形態では暗号機能および復号機能を有する暗号・復号器１３２を設けたが、この形態に限られるものではない。例えば暗号機能を有する暗号器と、復号機能を有する復号器を別々に設けてもよい。
【００５８】
インストールするプログラムを、不図示の入力装置から入力してもよいし、通信ネットワーク２を介して端末装置３から入力してもよい。
【００５９】
【発明の効果】
本発明によれば、プログラムの実行時に、不正な監視や改竄を防止することができるデータ処理装置、およびデータ処理方法を提供することができる。
【図面の簡単な説明】
【図１】図１は、本発明に係るデータ処理装置の第１実施形態を示す機能ブロック図である。
【図２】図２（ａ）は、図１に示したデータ処理装置の暗号化処理の一具体例を説明するための図、図２（ｂ）は図１に示したデータ処理装置の復号処理の一具体例を説明するための図である。
【図３】図３は、図１に示したデータ処理装置の動作を説明するためのフローチャートである。
【図４】図４は、図１に示したデータ処理装置の動作を説明するためのフローチャートである。
【符号の説明】
１…データ処理装置、２…通信ネットワーク、３…端末装置、１１…通信（インタフェース：Ｉ／Ｆ）、１２…外部メモリ、１３…チップ、１２１…ＲＡＭ（Ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、１２２…ハードディスクドライブ（ＨＤＤ）、１３１…Ｉ／Ｆ、１３２…暗号・復号器、１３３…乱数発生器、１３４…不揮発性メモリ、１３５…キャッシュメモリ、１３６…ＣＰＵ。
【図１】
2004280678.tif 000003
【図２】
2004280678.tif 000004
【図３】
2004280678.tif 000005
【図４】
2004280678.tif 000006