(57)【要約】【課題】マイクロコンピュータで実行中のソフトウェアおよびソフトウェアにより生成された中間情報を、ソフトウェアの改変なしに安全にマイクロコンピュータ外部のメモリ領域へ退避、および外部メモリ領域からの書き戻しすることができるマイクロコンピュータを提供する。【解決手段】マイクロコンピュータにおいて、ＣＰＵと、内部メモリと、セキュア領域判定部１０１とを備え、セキュア領域判定部１０１は、セキュア領域範囲設定レジスタ１１１と、セキュア領域有効レジスタ１１０と、アドレス判定部１１３と、アドレス判定部１１３による判定結果、バスからのコマンド、およびセキュア領域有効レジスタの情報に基づいて、セキュア領域へのアクセス権限を判定し、その判定結果を通知するセキュア領域フラグ１２０を出力するセキュア領域フラグ制御部１１５とを有する。【選択図】図１
2007310601.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置と、
情報格納用の内部メモリと、
前記内部メモリ内に設定される秘密情報格納用のセキュア領域へのアクセスの判定を行うセキュア領域判定部とを備え、
前記セキュア領域判定部は、
前記セキュア領域のセキュア領域範囲を設定するセキュア領域範囲設定レジスタと、
前記セキュア領域の有効または無効を設定するセキュア領域有効レジスタと、
前記セキュア領域判定部が接続されたバスからアドレスを取得し、そのアドレスに基づいて、前記セキュア領域へのアクセスであるかを判定するアドレス判定部と、
前記アドレス判定部による判定結果、前記バスからのコマンド、および前記セキュア領域有効レジスタの情報に基づいて、前記セキュア領域へのアクセス権限を判定し、その判定結果を通知するセキュア領域フラグを出力するセキュア領域フラグ制御部とを有することを特徴とするマイクロコンピュータ。
【請求項２】
請求項１記載のマイクロコンピュータにおいて、
前記セキュア領域フラグ制御部は、前記セキュア領域へのアクセス違反を判定し、その判定結果を通知するエラーフラグを出力することを特徴とするマイクロコンピュータ。
【請求項３】
請求項１または２記載のマイクロコンピュータにおいて、
前記中央演算処理装置が演算時に使用する演算用レジスタに、前記セキュア領域フラグを保持するレジスタを設け、
前記中央演算処理装置は、前記セキュア領域フラグをセキュア領域信号として外部に出力することを特徴とするマイクロコンピュータ。
【請求項４】
請求項３記載のマイクロコンピュータにおいて、
前記セキュア領域信号を受信し、前記セキュア領域信号の指示により暗号化処理、復号処理を実行する暗号処理部と、
前記暗号化した情報を前記マイクロコンピュータに付属する外部メモリに転送する際に、前記外部メモリへの転送先を記憶する第１の暗号化情報転送先記憶部と、
前記外部メモリから情報が転送されてきた際、転送元と前記第１の暗号化情報転送先記憶部に記憶された情報の照合を行う暗号化情報転送先判定部とを備え、
前記暗号化情報転送先判定部の照合の結果、一致すれば前記外部メモリから転送された情報を前記暗号処理部で復号し、復号したデータを前記中央演算処理装置に転送する際に、前記セキュア領域信号を有効に設定することを特徴とするマイクロコンピュータ。
【請求項５】
請求項４記載のマイクロコンピュータにおいて、
前記マイクロコンピュータ内のダイレクトメモリアクセスコントローラが読み出す領域を判定する領域判定部を備え、
前記暗号処理部は、前記セキュア領域フラグにより前記セキュア領域から読み出した情報の暗号化を実行し、
前記暗号処理部により前記暗号化された情報を前記ダイレクトメモリアクセスコントローラへ転送する際に、前記セキュア領域信号を有効にする設定することを特徴とするマイクロコンピュータ。
【請求項６】
請求項５記載のマイクロコンピュータにおいて、
前記ダイレクトメモリアクセスコントローラは、前記暗号化された情報と共に前記セキュア領域信号を受信すると、前記暗号化された情報の転送先を格納する第２の暗号化情報転送先記憶部を有することを特徴とするマイクロコンピュータ。
【請求項７】
請求項６記載のマイクロコンピュータにおいて、
前記第１の暗号化情報転送先記憶部と前記第２の暗号化情報転送先記憶部は、共用されることを特徴とするマイクロコンピュータ。
【請求項８】
中央演算処理装置と、情報格納用の内部メモリとを備えたマイクロコンピュータのソフトウェア保護方法であって、
セキュア領域範囲設定レジスタおよびセキュア領域有効レジスタにより、前記セキュア領域のセキュア領域範囲および前記セキュア領域の有効または無効を設定し、
前記マイクロコンピュータ内のバスからアドレスを取得し、そのアドレスに基づいて、前記セキュア領域へのアクセスであるかを判定し、その判定結果、前記バスからのコマンド、および前記セキュア領域有効レジスタの情報に基づいて、前記セキュア領域へのアクセス権限を判定し、その判定結果を通知するセキュア領域フラグをセキュア領域信号として前記中央演算処理装置の外部に出力することを特徴とするマイクロコンピュータのソフトウェア保護方法。
【請求項９】
請求項８記載のマイクロコンピュータのソフトウェア保護方法において、
前記セキュア領域信号を受信し、前記セキュア領域信号の指示により暗号化処理、復号処理を実行し、前記暗号化した情報を前記マイクロコンピュータに付属する外部メモリに転送する際に、前記外部メモリへの転送先を記憶し、前記外部メモリから情報が転送されてきた際、転送元と前記記憶した転送先の情報の照合を行い、その照合の結果、一致すれば前記外部メモリから転送された情報を復号し、復号したデータを前記中央演算処理装置に転送する際に、前記セキュア領域信号を有効に設定することを特徴とするマイクロコンピュータのソフトウェア保護方法。
【請求項１０】
請求項９記載のマイクロコンピュータのソフトウェア保護方法において、
前記マイクロコンピュータ内のダイレクトメモリアクセスコントローラが読み出す領域を判定し、前記セキュア領域フラグにより前記セキュア領域から読み出した情報の暗号化を実行し、前記暗号化された情報を前記ダイレクトメモリアクセスコントローラへ転送する際に、前記セキュア領域信号を有効にする設定することを特徴とするマイクロコンピュータのソフトウェア保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、特に、マイクロコンピュータ上で実行中のソフトウェアやソフトウェアが使用している処理過程で生成された中間データを保護する技術に関するものである。
【背景技術】
【０００２】
近年、ネットワーク環境のブロードバンド化に伴い、多種多様な情報がネットワークから入手可能になり、また、デジタルコンテンツの視聴、入手が容易になるなど、ネットワーク上を流通する情報の重要性、および、利便性が増大している。
【０００３】
また、ストレージの記録密度向上や小型化に伴い、ハードディスク（以下、ＨＤＤと呼ぶ）レコーダや携帯型音楽プレイヤ、携帯電話といったパーソナルコンピュータ（以下、ＰＣと呼ぶ）以外の情報家電と呼ばれる組み込み機器にも大量のデジタルデータが保存できるようになった。
【０００４】
一方、ノート型ＰＣの紛失、盗難による個人情報流出、デジタルコンテンツの不正な複製などがマスメディアで大きく取り上げられ、情報セキュリティ技術の重要性が高まっている。情報セキュリティ技術の基盤となるのは暗号技術であり、ネットワークの世界では特定の相手と安全な通信の実現、および、情報の不正使用防止を主目的に利用される。
【０００５】
前述のとおり、組み込み機器ではネットワーク機能やデジタルデータの処理機能の搭載が進展しており、それと共に、暗号処理をはじめとした情報セキュリティ技術への要求も高まっている。暗号処理を実現するためには、暗号処理専用のハードウェアによる実現とソフトウェアによる実現の二通りが大まかに考えられる。価格競争が激しい情報家電をはじめとする組み込み機器では製品開発、生産時の低コスト化が重要な要素であり、一般的に、暗号処理性能面ではハードウェアが優位であるが、チップサイズや適合するチップが世の中に存在しない場合の専用品開発に伴う投資額など製品コストが増加する傾向にあるため、ソフトウェア実装が採用される場合も多い。
【０００６】
しかしながら、ソフトウェアはハードウェアに比べてセキュリティ面での強度が低いとされる。これは、ハードウェアはチップ内で秘密裏に処理が実行可能であり解析には高価な装置や高度な知識が必要であるのに対し、ソフトウェアではマイクロコンピュータの主記憶として使用されるＳＤＲＡＭ等チップ外のメモリに情報が格納されるため、その情報が盗聴される危険性が高いこと、また、ソフトウェアのオブジェクトプログラム自身を逆アセンブラなどを用いてソースプログラムに逆変換するなど、エンドユーザにより比較的容易に実行可能な解析手法がハードウェアに比べて多数存在するためである。
【０００７】
このような問題に対し、従来では、ソフトウェアプログラムの難読化と呼ばれる技術を適用し、例えばプログラムのロジックを複雑にすることで逆解析の難度を上げる、さらには、プログラム自身の暗号化により逆アセンブラ等の使用では解析できないようにする等、いわゆる、ソフトウェアの耐タンパ性の向上が図られている。
【０００８】
また、特開２００１−２３０７７０号公報（特許文献１）では、プログラム自身を暗号化すると共に、そのプログラムの実行時にはマイクロコンピュータ内部で復号し、復号して得られた情報はマイクロコンピュータ外部に出力しないような機構を具備することで、秘密情報がマイクロコンピュータ外部に暴露することを防いでいる。また、中央演算処理装置（以下、ＣＰＵ）が実行中のプロセスを切り替える必要がある場合、ＣＰＵが演算に使用しているデータ（コンテキスト）は暗号化して外部メモリに出力する手段、そのコンテキストを書き戻す際の復号手段を備えることで、ソフトウェア実行時の秘密情報の安全な出力を実現している。
【特許文献１】特開２００１−２３０７７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
組み込み機器に搭載されるマイクロコンピュータは、ＰＣ向けのプロセッサに比べて、演算性能、および、マイクロコンピュータ内部に搭載するメモリ容量が小さい。また、暗号処理ソフトウェアは一般的なソフトウェアと比較して多くの演算が必要なため、組み込み機器では暗号処理の高速化が重要となる。暗号処理性能向上のための一例としては、暗号処理の演算過程で生成した再利用可能な中間情報などは消去せずにメモリ上に保持しておくことで、再度演算するときに必要な時間を削減するという手法がある。
【００１０】
耐タンパ性向上の観点から、暗号処理等秘密情報を扱うソフトウェアプログラム、および、そのプログラムが生成する秘密情報を含む中間情報は、マイクロコンピュータ内部のメモリ上に保持することが必要である。
【００１１】
しかしながら、組み込み機器向けマイクロコンピュータはマイクロコンピュータ内部に搭載するメモリ容量が限られており、暗号処理過程で生成した中間情報を保持しておくことが難しい場合があり、結果、暗号処理性能の向上が困難になる場合があるという課題があった。
【００１２】
そこで、本発明の目的は、マイクロコンピュータで実行中のソフトウェアおよびソフトウェアにより生成された中間情報を、ソフトウェアの改変なしに安全にマイクロコンピュータ外部のメモリ領域へ退避、および外部メモリ領域からの書き戻しすることができるマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１４】
本発明によるマイクロコンピュータは、中央演算処理装置と、情報格納用の内部メモリと、内部メモリ内に設定される秘密情報格納用のセキュア領域へのアクセスの判定を行うセキュア領域判定部とを備え、セキュア領域判定部は、セキュア領域のセキュア領域範囲を設定するセキュア領域範囲設定レジスタと、セキュア領域の有効または無効を設定するセキュア領域有効レジスタと、セキュア領域判定部が接続されたバスからアドレスを取得し、そのアドレスに基づいて、セキュア領域へのアクセスであるかを判定するアドレス判定部と、アドレス判定部による判定結果、バスからのコマンド、およびセキュア領域有効レジスタの情報に基づいて、セキュア領域へのアクセス権限を判定し、その判定結果を通知するセキュア領域フラグを出力するセキュア領域フラグ制御部とを有するものである。
【００１５】
また、本発明によるマイクロコンピュータのソフトウェア保護方法は、中央演算処理装置と、情報格納用の内部メモリとを備えたマイクロコンピュータのソフトウェア保護方法であって、セキュア領域範囲設定レジスタおよびセキュア領域有効レジスタにより、セキュア領域のセキュア領域範囲およびセキュア領域の有効または無効を設定し、マイクロコンピュータ内のバスからアドレスを取得し、そのアドレスに基づいて、セキュア領域へのアクセスであるかを判定し、その判定結果、バスからのコマンド、およびセキュア領域有効レジスタの情報に基づいて、セキュア領域へのアクセス権限を判定し、その判定結果を通知するセキュア領域フラグをセキュア領域信号として中央演算処理装置の外部に出力するものである。
【発明の効果】
【００１６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１７】
本発明によれば、マイクロコンピュータで実行中のソフトウェアおよびソフトウェアにより生成された中間情報を、ソフトウェアの改変なしにハードウェアのみで安全にマイクロコンピュータ外部のメモリ領域へ退避、および外部メモリ領域からの書き戻しすることが可能となる。
【００１８】
また、外部メモリに出力する全データを暗号化するのではなく、暗号化が必要なデータのみを暗号化処理することにより、暗号処理によるマイクロコンピュータ−外部メモリ間の転送性能劣化を低減することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２０】
＜マイクロコンピュータの構成＞
図１〜図５により、本発明の一実施の形態に係るマイクロコンピュータの構成について説明する。図１は本発明の一実施の形態に係るマイクロコンピュータのＣＰＵ内のセキュア領域判定部の構成を示す図、図２は本発明の一実施の形態に係るマイクロコンピュータのメモリ領域を示す図、図３は本発明の一実施の形態に係るマイクロコンピュータの全体構成を示す図、図４は本発明の一実施の形態に係るマイクロコンピュータのバスブリッジの構成を示す図であり、バスブリッジ内のセキュア領域の制御に係わる部分、および、暗号処理部の構成を示したものである。図５は本発明の一実施の形態に係るマイクロコンピュータのバスブリッジ内のセキュア領域判定部の構成を示す図である。
【００２１】
図１において、セキュア領域判定部１０１は、セキュア領域へのアクセス判定、および、外部メモリ領域への転送時の暗号化処理の有無、外部メモリ領域からの転送時の復号処理の有無を判定するものであり、正論理（信号の有効時に１、無効時に０）で記載しており、以下全図を正論理で記載する。
【００２２】
セキュア領域有効レジスタ１１０はセキュア領域の有効／無効を示し、本設定が有効な場合のみセキュア領域が有効となり、セキュア領域フラグ制御部１１５が動作する。
【００２３】
このセキュア領域は、図２（ａ）に示すように、マイクロコンピュータの内部メモリ領域に設定され、内部メモリ内において、任意の容量を設定可能である。
【００２４】
また、セキュア領域内のデータは、ＣＰＵ内部の演算器が演算時に使用するレジスタ、および、図２（ｂ）に示すように、マイクロコンピュータに接続された外部メモリ領域へ暗号化して出力する場合のみセキュア領域からの転送を許可する設定とし、セキュア領域以外の内部メモリ領域への転送は許可しない。
【００２５】
セキュア領域範囲設定レジスタ１１１は、内部メモリ内のセキュア領域を設定するレジスタであり、ユーザにより可変である。ただし、設定可能なセキュア領域は、アドレスマップ１１２に定義されているマイクロコンピュータでユーザが使用可能な内部メモリ領域を超えない範囲とする。
【００２６】
アドレス判定部１１３は、セキュア領域判定部１０１が接続されたバスからアドレスを取得し、セキュア領域範囲設定レジスタ１１１、および、アドレスマップ１１２の値を参照して、セキュア領域、セキュア領域以外の内部メモリ領域、外部メモリ領域などその他領域のうちのどの領域であるかを判別してセキュア領域フラグ制御部１１５に対してその領域情報を送信する。
【００２７】
セキュア領域フラグ制御部１１５は、セキュア領域有効レジスタ１１０の設定が有効な場合、アドレス判定部１１３からの領域情報、および、セキュア領域判定部１０１が接続されたバスからコマンド（リード／ライト）情報により、セキュア領域フラグの有効／無効、および、アクセス違反を判定する。セキュア領域へのアクセスが有効であればセキュア領域フラグ１２０を有効とし、アクセス違反があればエラーフラグ１２１を有効にする。
【００２８】
セキュア領域フラグレジスタ１１６は、セキュア領域フラグを元信号とする信号で、ＣＰＵ内部の演算器が使用するレジスタにフラグとして追加する。セキュア領域フラグレジスタは、ＣＰＵ内の演算器が使用するデータがセキュア領域内のデータであるか否かを示す。セキュア領域フラグレジスタが有効である場合、同レジスタ内に格納されたデータは、セキュア領域内に格納されたデータと同じ扱いを受ける。
【００２９】
セキュア領域フラグクリア１１４は、セキュア領域フラグに係わる処理が終了したときに有効となり、セキュア領域フラグ制御部の内部状態をクリアする。すなわち、セキュア領域フラグクリアにより、セキュア領域フラグはクリアされる。
【００３０】
また、図３において、マイクロコンピュータ２０１は、ＣＰＵ２１２、キャッシュ２１３、バスブリッジ２１４、内部メモリ２１５、外部バスコントローラ２２１、ＤＭＡコントローラ２２２、周辺バスコントローラ２２３、クロック生成器２２４、タイマ２２５、割り込みコントローラ２２６、Ｉ／Ｏコントローラ２２７、ＣＰＵバス２１１、内部バス２２０などから構成されている。また、マイクロコンピュータ２０１は、外部バス２３０を介して、外部メモリ２３１、外部デバイス２３２と接続されている。
【００３１】
図１に示すセキュア領域判定部１０１はＣＰＵ２１２に内蔵され、ＣＰＵバス２１１上のアドレス、コマンドを取得可能な位置（例えば、ＣＰＵ２１２内部のＣＰＵバス２１１とのインタフェース部）に接続され、ＣＰＵ２１２から内部メモリ２１５に確保されたセキュア領域へのアクセス制御を行う。
【００３２】
セキュア領域判定部１０１から出力されるセキュア領域信号１３０はＣＰＵ２１２とバスブリッジ２１４、ＤＭＡ用セキュア領域信号２４０はバスブリッジ２１４とＤＭＡ（ダイレクトメモリアクセス）コントローラ２２２との間に接続する。
【００３３】
この接続は、専用のバスなどを使用して接続し、セキュア領域信号１３０およびＤＭＡ用セキュア領域信号２４０は、他の信号とは別に独立してやり取りできるようにしている。なお、専用のバスなどではなく、通常使用されるＣＰＵバス２１１や内部バス２２０を使用してセキュア領域信号１３０およびＤＭＡ用セキュア領域信号２４０をやり取りすることも可能である。
【００３４】
バスブリッジ２１４は、ＣＰＵバス２１１と内部バス２２０の通信プロトコル変換、およびアクセス権の調整等の機能を持つ。
【００３５】
また、図４において、セキュア領域判定部３０１は、図１に示すセキュア領域判定部１０１と同等の機能を有するが、ＣＰＵ２１２内の演算用レジスタとは無関係であるため、図５に示すように図１の機能を削減したしたものを搭載する。
【００３６】
セキュア領域信号入出力制御部３０２は、ＣＰＵバス２１１側からの転送時にセキュア領域信号１３０を入力して暗号化指示信号３２０へ伝送し、内部バス側からの転送時には、復号指示信号３２１の情報をセキュア領域信号１３０へ伝送する。
【００３７】
暗号処理部３０４はセキュア領域信号１３０を元信号とする暗号化指示信号有効時に暗号化、復号指示信号３２１が有効時に復号処理を行う。
【００３８】
スイッチ３０５は暗号化指示信号３２０が有効の場合には暗号処理部からの暗号化データを内部バス側へ転送し、復号指示信号３２１が有効の場合には内部バス側から暗号処理部へデータを転送する。暗号化指示信号３２０、復号指示信号３２１がともに無効の場合には、暗号処理部を通過しない経路でデータを転送する。
【００３９】
暗号化データ転送先判定部３０７および暗号化データ転送先記憶部３０８は、暗号化したデータの転送先アドレスを記憶しておき、暗号化データをＣＰＵ演算用レジスタ、および、セキュア領域への書き戻す場合の復号処理の有無の判定に使用する。
【００４０】
また、暗号化データ転送先判定部３０７および暗号化データ転送先記憶部３０８は、常にアドレスの判定を行い、暗号化データ転送先記憶部に格納されているアドレスに対して、暗号化を施さない通常の書き込み、すなわちセキュア領域内に格納していたデータが破棄された場合には、暗号化データ転送先記憶部に記載された該当アドレスを消去する。
【００４１】
＜マイクロコンピュータの動作＞
次に、図６〜１０により、本発明の一実施の形態に係るマイクロコンピュータの動作について説明する。図６〜図８は本発明の一実施の形態に係るマイクロコンピュータのＣＰＵによるデータ転送時の制御動作を示すフローチャート、図９および図１０は本発明の一実施の形態に係るマイクロコンピュータのダイレクトメモリアクセスコントローラによるデータ転送時の制御動作を示すフローチャートである。
【００４２】
まず、ＣＰＵ２１２による内部メモリ領域からＣＰＵ演算用レジスタへのリード時の制御動作としては、図６に示すように、ＣＰＵ２１２によるＣＰＵ演算用レジスタへのリード要求が発生した場合（ステップ５０１）、セキュア領域フラグ制御部１１５はセキュア領域からのリードであるかを判定する（ステップ５０２）。
【００４３】
そして、セキュア領域以外からのリード要求であれば通常のリード処理を実行し（ステップ５０３）、セキュア領域からのリード要求である場合にはセキュア領域フラグを有効にし（ステップ５０４）、その結果、リードしたデータが格納される演算用レジスタのセキュア領域フラグレジスタ１１６が有効になる（ステップ５０５）。
【００４４】
その後、セキュア領域からのリードデータが演算用レジスタに格納され（ステップ５０６）、そのリードデータに対して演算が発生する場合には（ステップ５０７）、演算結果の格納先レジスタに対しても、セキュア領域フラグレジスタを有効にする。
【００４５】
演算終了後、セキュア領域フラグクリア１１４を有効にすることでセキュア領域フラグ制御部１１５の内部状態が初期化される（ステップ５０８）。
【００４６】
このとき、セキュア領域フラグレジスタ１１６の値はクリアされず、演算用レジスタに格納されたデータが破棄、もしくは、上書きされるまで保持される。
【００４７】
このように、本実施の形態では、セキュア領域内に格納されたデータには、データが破棄されるまでセキュア領域内のデータであることを示す情報を付加することで、セキュア領域内のデータの保護を実現する。
【００４８】
また、ＣＰＵ２１２によるＣＰＵ演算用レジスタに格納したデータのライト時の制御動作としては、図７に示すように、ＣＰＵ２１２によるＣＰＵ演算用レジスタ格納データのライト要求が発生した場合（ステップ６０１）、セキュア領域フラグ制御部１１５はライトするデータが格納された演算用レジスタのセキュア領域フラグレジスタ１１６をチェックする（ステップ６０２）。
【００４９】
そして、セキュア領域フラグレジスタ１１６が無効であれば、通常ライトとして処理し（ステップ６０３）、セキュア領域フラグレジスタ１１６が有効であれば、ライト先アドレスが内部アドレス領域であるかを判定する（ステップ６０４）。
【００５０】
ライト先アドレスが内部アドレス領域である場合には、セキュア領域であるかを判定し（ステップ６０５）、セキュア領域である場合には、セキュア領域フラグを有効にする（ステップ６０７）。
【００５１】
セキュア領域でない場合には、セキュア領域フラグレジスタが有効のデータ、すなわち、セキュア領域内のデータはセキュア領域以外の内部メモリ領域へのアクセスは禁止であるため、エラーフラグ１２１を有効にしてエラー処理を実行する（ステップ６０６）。
【００５２】
ここで述べたエラー処理とは、アクセス権のないメモリ領域へのアクセス違反、存在しないメモリ領域を指定したことによる違反など、通常のマイクロコンピュータが実行可能な処理でよい。
【００５３】
ステップ６０４の判定で内部アドレス空間でない場合には、セキュア領域フラグを有効にする（ステップ６０７）。ステップ６０７によりセキュア領域信号１３０が有効となり（ステップ６０８）、ＣＰＵ２１２はＣＰＵ演算用レジスタに格納したデータをバスブリッジ２１４に対してライト処理を行う（ステップ６０９）。バスブリッジ２１４よりデータの受信完了、すなわちＣＰＵ２１２によるライト処理の完了を示す信号を受信すると（ステップ６１０）、セキュア領域フラグクリア１１４を有効にすることでセキュア領域フラグ制御部１１５の内部状態が初期化し（ステップ６１１）、セキュア領域信号１３０を無効にする（ステップ６１２）。
【００５４】
バスブリッジ２１４は、セキュア領域フラグが有効な状態でデータを受信したため、そのデータを暗号処理部３０４で暗号化して内部バス側に転送するとともに、暗号化データ転送先記憶部３０８に暗号化データの転送先アドレスを記憶する。
【００５５】
また、ＣＰＵ２１２による外部メモリ空間からＣＰＵ演算用レジスタへのリード時の制御動作としては、図８に示すように、ＣＰＵ２１２からのリード要求は、図６に示すステップ５０２で前述したようにＣＰＵ内のセキュア領域判定部１０１はセキュア領域からのリード要求以外は通常リードとして処理する。この時、セキュア領域に係わる処理は図４に示したバスブリッジ２１４内で実行される。
【００５６】
ＣＰＵ２１２からバスブリッジ２１４に対して外部メモリからＣＰＵ演算用レジスタへのリード要求が発生すると（ステップ７０１）、暗号化データ転送先判定部３０７および暗号化データ転送先記憶部３０８はＣＰＵ２１２が要求しているリード元アドレスが暗号処理部３０４により暗号化後転送したデータであるかを判定する（ステップ７０２）。
【００５７】
ステップ７０２での判定の結果、暗号化データ転送先記憶部３０８に格納していないアドレスである、すなわち、セキュア領域以外の領域のデータであれば通常のリード処理として実行する（ステップ７０３）。
【００５８】
暗号化データ転送先記憶部３０８に格納したデータ、すなわち、セキュア領域内に格納していたデータであれば、復号指示信号３２１を有効にし（ステップ７０４）、セキュア領域信号１３０を有効にして（ステップ７０５）、暗号処理部３０４により復号後（ステップ７０６）、復号したデータをＣＰＵ２１２に転送する（ステップ７０７）。
【００５９】
ＣＰＵ２１２は、セキュア領域信号１３０が有効な状態でデータを受信すると、格納先レジスタのセキュア領域フラグレジスタ１１６を有効にして、セキュア領域内に格納されたデータとして処理を実行する（ステップ７０８）。
【００６０】
バスブリッジ２１４は、ＣＰＵ２１２によるリード完了信号を受信すると（ステップ７０９）、セキュア領域信号入出力制御部３０２によりセキュア領域信号１３０を無効状態とする（ステップ７１０）。
【００６１】
また、ダイレクトメモリアクセス（以下、ＤＭＡ）コントローラ２２２によるセキュア領域から転送要求時の制御動作としては、図９に示すように、バスブリッジ２１４は、ＤＭＡコントローラ２２２による転送要求を受信すると（ステップ８０１）、セキュア領域判定部３０１によりセキュア領域からの転送要求であるかを判定する（ステップ８０２）。
【００６２】
ステップ８０２での判定の結果、セキュア領域からの転送要求でない場合、通常のＤＭＡ転送を実施し（ステップ８０３）、セキュア領域からの転送要求の場合、セキュア領域信号入出力制御部３０２により、暗号化指示信号３２０、およびＤＭＡ用セキュア領域信号２４０を有効にする（ステップ８０４、ステップ８０５）。
【００６３】
バスブリッジ２１４は、セキュア領域からデータを受信すると（ステップ８０６）、暗号処理部３０４により受信データの暗号化を実行する（ステップ８０７）。
【００６４】
暗号化したセキュア領域からの受信データは、ＤＭＡコントローラ２２２へ転送される（ステップ８０８）。
【００６５】
この時、バスブリッジ２１４は、ＤＭＡコントローラ２２２が暗号化したデータをどのアドレスへ転送するかは分からないため、暗号化データ転送先記憶部への転送先アドレス格納は実施しない。暗号化データ転送先記憶部は、バスブリッジ２１４とＤＭＡコントローラ２２２で共用、もしくは一元管理可能な方式で実装し、ＤＭＡコントローラ２２２が暗号化されたセキュア領域内のデータを転送する際に転送先アドレスを格納する。
【００６６】
これにより、ＤＭＡコントローラ２２２により外部メモリ２３１に転送されたセキュア領域内に格納されていたデータをＣＰＵ２１２がリードすること、もしくは、その逆のＣＰＵ２１２が外部メモリ２３１に転送したセキュア領域内に格納されていたデータをＤＭＡコントローラ２２２が読み込むことが可能となる。
【００６７】
バスブリッジ２１４は、ＤＭＡコントローラ２２２への転送が完了すると（ステップ８０９）、暗号化指示信号３２０を無効にし（ステップ８１０）、ＤＭＡ用セキュア領域信号２４０を無効にする（ステップ８１１）。
【００６８】
ＤＭＡコントローラ２２２は、ＤＭＡ用セキュア領域信号２４０をバスブリッジ２１４からの受信データとともに受信すると、外部メモリ２３１に対して受信データを転送する際、バスブリッジ２１４と共用している暗号化データ転送先記憶部３０８に対して、転送先アドレスを記憶する。
【００６９】
また、ＤＭＡコントローラ２２２がセキュア領域へ転送する際の制御動作としては、図１０に示すように、バスブリッジ２１４は、ＤＭＡコントローラ２２２による転送要求を受信すると（ステップ９０１）、暗号化データ転送先判定部３０７および暗号化データ転送先記憶部３０８は転送元アドレスが暗号処理を行ったデータであるかを判定する（ステップ９０２）。暗号処理を行っていないデータであれば、通常のＤＭＡ転送として処理する（ステップ９０３）。
【００７０】
暗号処理を行ったデータであれば、セキュア領域判定部３０１によりセキュア領域への転送であるかを判定する（ステップ９０４）。
【００７１】
セキュア領域への転送でない場合、セキュア領域に格納されていたデータのセキュア領域外への転送は禁止なのでエラー処理を実行する（ステップ９０５）。セキュア領域への転送の場合、復号指示信号３２１を有効にする（ステップ９０６）。
【００７２】
復号処理後（ステップ９０７）、セキュア領域への転送を実施する（ステップ９０８）。転送完了後（ステップ９０９）、復号指示信号３２１を無効にする（ステップ９１０）。
【００７３】
ＣＰＵ２１２内部で秘匿すべきデータが存在する箇所として、内部メモリ以外では、ＣＰＵ演算レジスタ内のデータとキャッシュ２１３内のデータがある。
【００７４】
割り込みやプロセススイッチ等によりＣＰＵ演算レジスタのデータを退避する場合があるが、別途退避用のレジスタをＣＰＵ内部に具備するマイクロコンピュータが存在するため、それを利用することで回避可能である。
【００７５】
キャッシュ２１３内のデータについてはマイクロコンピュータ外部への出力を禁止する設定とする。キャッシュ２１３内のデータ出力を可能な構成にする場合には、キャッシュ２１３内の各エントリに対してセキュア領域フラグレジスタ１１６相当の情報を付加できる構成とし、キャッシュ２１３でもセキュア領域信号１３０の制御が可能な構成とすることで、セキュア領域内に格納されているデータについてはマイクロコンピュータ外部への暗号化出力が実現可能である。
【００７６】
以上では、実施の形態として、図４に示すようにバスブリッジ２１４内に暗号処理部３０４と暗号処理部３０４、および、セキュア領域信号１３０、ＤＭＡ用セキュア領域信号２４０を制御するための機構を設けたが、本実施の形態では、この構成に限らず、一般的にＣＰＵコアと呼ばれるＣＰＵ２１２、キャッシュ２１３、バスブリッジ２１４、内部メモリ２１５を始めとする部分と、その外部にあるモジュール間を接続するような、内部メモリ２１５、および、ＣＰＵ２１２へのアクセスがすべて通過するような箇所に設置することが望ましい。
【００７７】
また、本実施の形態の説明ではバス上を流れる物理アドレスによりチェックを行うよう記載した。また、マイクロコンピュータを制御するオペレーティングシステムは、通常仮想アドレスを使用する。
【００７８】
本実施の形態は、仮想アドレスを扱うシステムにおいても適用可能である。仮想空間と物理空間の変換を行うハードウェアをメモリマネジメントユニット内部にセキュア領域判定部１０１、３０１とセキュア領域信号１３０を具備し、物理空間への変換後のアドレスをセキュア領域判定部１０１で判定することで、前述の実施の形態と同様の効果を得ることができる。
【００７９】
以上、本実施の形態により、マイクロコンピュータで実行中のソフトウェア、および、ソフトウェアにより生成された中間情報を、ソフトウェアの改変なしにハードウェアのみで安全にマイクロコンピュータ外部のメモリ領域へ退避、および、外部メモリ領域からの書き戻しすることが可能となる。
【００８０】
また、外部メモリに出力する全データを暗号化するのではなく、暗号化が必要なデータのみを暗号化処理することにより、暗号処理によるマイクロコンピュータ−外部メモリ間の転送性能劣化を低減することが可能となる。
【００８１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００８２】
本発明は、マイクロコンピュータに関し、マイクロコンピュータ上で実行中のソフトウェアやソフトウェアが使用している処理過程で生成された中間データを保護する組込用マイコンなどに適用可能である。
【図面の簡単な説明】
【００８３】
【図１】本発明の一実施の形態に係るマイクロコンピュータのＣＰＵ内のセキュア領域判定部の構成を示す図である。
【図２】本発明の一実施の形態に係るマイクロコンピュータのメモリ領域を示す図である。
【図３】本発明の一実施の形態に係るマイクロコンピュータの全体構成を示す図である。
【図４】本発明の一実施の形態に係るマイクロコンピュータのバスブリッジの構成を示す図である。
【図５】本発明の一実施の形態に係るマイクロコンピュータのバスブリッジ内のセキュア領域判定部の構成を示す図である。
【図６】本発明の一実施の形態に係るマイクロコンピュータのＣＰＵによるデータ転送時の制御動作を示すフローチャートである。
【図７】本発明の一実施の形態に係るマイクロコンピュータのＣＰＵによるデータ転送時の制御動作を示すフローチャートである。
【図８】本発明の一実施の形態に係るマイクロコンピュータのＣＰＵによるデータ転送時の制御動作を示すフローチャートである。
【図９】本発明の一実施の形態に係るマイクロコンピュータのダイレクトメモリアクセスコントローラによるデータ転送時の制御動作を示すフローチャートである。
【図１０】本発明の一実施の形態に係るマイクロコンピュータのダイレクトメモリアクセスコントローラによるデータ転送時の制御動作を示すフローチャートである。
【符号の説明】
【００８４】
１０１…セキュア領域判定部、１１０…セキュア領域有効レジスタ、１１１…セキュア領域範囲設定レジスタ、１１２…アドレスマップ、１１３…アドレス判定部、１１４…セキュア領域フラグクリア、１１５…セキュア領域フラグ制御部、１１６…セキュア領域フラグレジスタ、１２０…セキュア領域フラグ、１２１…エラーフラグ、１３０…セキュア領域信号、２０１…マイクロコンピュータ、２１１…ＣＰＵバス、２１２…ＣＰＵ、２１３…キャッシュ、２１４…バスブリッジ、２１５…内部メモリ、２２０…内部バス、２２１…外部バスコントローラ、２２２…ＤＭＡコントローラ、２２３…周辺バスコントローラ、２２４…クロック生成器、２２５…タイマ、２２６…割り込みコントローラ、２２７…Ｉ／Ｏコントローラ、２３０…外部バス、２３１…外部メモリ、２３２…外部デバイス、２４０…ＤＭＡ用セキュア領域信号、３０１…セキュア領域判定部、３０２…セキュア領域信号入出力制御部、３０４…暗号処理部、３０５…スイッチ、３０７…暗号化データ転送先判定部、３０８…暗号化データ転送先記憶部、３２０…暗号化指示信号、３２１…復号指示信号。
【図１】
2007310601.tif 000003
【図２】
2007310601.tif 000004
【図３】
2007310601.tif 000005
【図４】
2007310601.tif 000006
【図５】
2007310601.tif 000007
【図６】
2007310601.tif 000008
【図７】
2007310601.tif 000009
【図８】
2007310601.tif 000010
【図９】
2007310601.tif 000011
【図１０】
2007310601.tif 000012