(57)【特許請求の範囲】
【請求項１】
２以上のセキュリティモードを切り換えて動作可能なプロセッサと、
前記プロセッサがアクセス可能なメモリ領域を備えるメインメモリと、
前記メインメモリを制御するメモリコントローラと、を有し、
前記メモリコントローラは、前記プロセッサが、前記２以上のセキュリティモードのうち、セキュリティレベルを最高としたモードであるセキュアモードと、前記セキュアモードに対し低いセキュリティレベルのモードであるノンセキュアモードと、のいずれであるかを識別し、識別されたセキュリティモードに応じて、前記メインメモリの前記メモリ領域ごとに対するアクセス制限を実施し、
前記プロセッサは、
暗号化された保護対象プログラムを前記セキュアモードにて復号化し、及び復号化された保護対象プログラムを前記メモリ領域に配置する第１プログラムと、
前記セキュアモードにて前記保護対象プログラムを実行する第２プログラムと、を前記アクセス制限のある前記メモリ領域に配置し、
プログラムのロード処理において、前記プロセッサは、前記第１プログラムを使用して、前記復号化された保護対象プログラムのコード領域と保護データ領域とを、前記アクセス制限のある前記メモリ領域に配置し、
前記ノンセキュアモードにおいてプログラムを実行する過程で前記保護データ領域へのアクセスが確認された場合に、前記プロセッサは、前記第２プログラムを使用して、当該アクセスが前記第１プログラムによって配置された前記コード領域の命令によることを確認した上で前記命令を実行することを特徴とする情報処理装置。
【請求項２】
前記メインメモリは、
前記アクセス制限により前記ノンセキュアモードでのデータの書き込み及び読み出しが禁止される前記メモリ領域である第１メモリ領域と、
前記アクセス制限により前記ノンセキュアモードでのデータの書き込みが禁止され、かつ前記ノンセキュアモードでのデータの読み出しが許可される前記メモリ領域である第２メモリ領域と、を備え、
前記ロード処理において、前記プロセッサは、前記第１プログラムの実行により、前記保護データ領域を前記第１メモリ領域に配置し、前記コード領域を前記第２メモリ領域に配置することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記メインメモリは、前記ノンセキュアモードでのデータの書き込み及び読み出しが許可される前記メモリ領域である第３メモリ領域を備え、
前記プロセッサは、ブートプログラムの実行により、前記暗号化された保護対象プログラムを、前記第３メモリ領域に配置することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記プロセッサは、暗号化されたメモリセクション情報を、前記第３メモリ領域に配置し、
前記プロセッサは、前記第１プログラムの実行により、前記暗号化されたメモリセクション情報を復号化し、及び復号化されたメモリセクション情報に従って前記コード領域及び前記保護データ領域を配置することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記プロセッサは、ブートプログラムの実行により、前記復号化に使用する鍵を前記第１メモリ領域に配置することを特徴とする請求項２または４に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【０００２】
従来、情報処理装置は、汎用ＯＳ(Operation  System)上で動作させるプログラムについて、改ざんの防止とデータの保護との実現が求められている。一般に、汎用ＯＳは、大規模であるために、改ざん防止及びデータ保護による信頼性の確保が難しいとされている。
【０００３】
信頼性の確保のために、例えば、複数のセキュリティモードを備えるプロセッサを使用する技術が知られている。このプロセッサは、セキュリティレベルの低いモードにて汎用ＯＳを動作させる。またこのプロセッサは、セキュリティレベルの高いモードにて、セキュリティに特化した小規模なセキュアＯＳを動作させる。情報処理装置は、改ざんの防止が望まれるプログラムや、保護が望まれるデータがある場合に、セキュアＯＳ上でプログラムを実行する。このようなセキュアＯＳは、小規模であるために、汎用ＯＳに比べてライブラリやシステムコールが少ない。セキュアＯＳ上で実行されるプログラムは、ライブラリ及びシステムコールが少ないことで作成が困難とされている。また、セキュアＯＳの開発ツールは比較的少ないことから、セキュアＯＳ上で実行されるプログラムは、大規模なプログラム開発が困難とされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００６−５０６７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、プログラムの改ざんの防止及びデータの保護を可能とする情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、情報処理装置は、プロセッサ、メインメモリ及びメモリコントローラを有する。プロセッサは、２以上のセキュリティモードを切り換えて動作可能である。メインメモリは、プロセッサがアクセス可能なメモリ領域を備える。メモリコントローラは、メインメモリを制御する。メモリコントローラは、プロセッサが、２以上のセキュリティモードのうち、セキュアモードとノンセキュアモードとのいずれであるかを識別する。セキュアモードは、セキュリティレベルを最高としたモードである。ノンセキュアモードは、セキュアモードに対し低いセキュリティレベルのモードである。メモリコントローラは、識別されたセキュリティモードに応じて、メインメモリのメモリ領域ごとに対するアクセス制限を実施する。プロセッサは、第１プログラム及び第２プログラムを、アクセス制限のあるメモリ領域に配置する。第１プログラムは、暗号化された保護対象プログラムをセキュアモードにて復号化する。また、第１プログラムは、復号化された保護対象プログラムをメモリ領域に配置する。第２プログラムは、セキュアモードにて保護対象プログラムを実行する。プログラムのロード処理において、プロセッサは、第１プログラムを使用して、復号化された保護対象プログラムのコード領域と保護データ領域とを、アクセス制限のあるメモリ領域に配置する。ノンセキュアモードにおいてプログラムを実行する過程で保護データ領域へのアクセスがあった場合に、プロセッサは、第２プログラムを使用して、当該アクセスが第１プログラムによって配置されたコード領域の命令によることを確認した上で命令を実行する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態にかかる情報処理装置の概略構成を示すブロック図である。
【図２】図２は、保護対象プログラム、メモリセクション情報、暗号化プログラムバイナリ及び暗号化メモリセクション情報の関係を示す図である。
【図３】図３は、情報処理装置によるプログラム実行の手順を示すフローチャートである。
【図４】図４は、情報処理装置によるプログラム実行の手順を示すフローチャートである。
【図５】図５は、メインメモリにおけるメモリ領域の設定及びデータ配置の例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかる情報処理装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００９】
（実施形態）
図１は、実施形態にかかる情報処理装置の概略構成を示すブロック図である。情報処理装置は、プロセッサ１０、メモリコントローラ１１、メインメモリ１２、ストレージコントローラ１３、記憶装置１４、アクセス制限コントローラ１５及びブートロム１６を備える。プロセッサ１０、メモリコントローラ１１、ストレージコントローラ１３及びアクセス制限コントローラ１５は、バス１７を介して接続されている。
【００１０】
プロセッサ１０は、メインメモリ１２からロードした命令やデータ処理を逐次的に実行する。プロセッサ１０は、命令やデータ処理の結果を、メインメモリ１２へ書き込む。なお、情報処理装置に備えられるプロセッサ１０の数は、任意であるものとする。
【００１１】
プロセッサ１０は、セキュリティレベルが異なる２つのセキュリティモードを切り換えて動作する。セキュアモードは、高いセキュリティレベルのセキュリティモードである。ノンセキュアモードは、低いセキュリティレベルのセキュリティモードである。
【００１２】
なお、プロセッサ１０は、２以上のセキュリティモードを切り換えて動作可能であれば良い。セキュアモードは、この２以上のセキュリティモードのうち、セキュリティレベルを最高としたモードとする。ノンセキュアモードは、この２以上のセキュリティモードのうち、セキュアモードに対し低いセキュリティレベルのモードとする。
【００１３】
プロセッサ１０の内部のキャッシュは、セキュアモードとノンセキュアモードとを判別する。プロセッサ１０は、セキュアモードによる動作とノンセキュアモードによる動作とを選択的に切り換え可能とする。
【００１４】
本実施形態において、プロセッサ１０は、セキュアモードによる動作のためのレジスタと、ノンセキュアモードによる動作のためのレジスタとを備える。セキュアモードでは、プロセッサ１０は、セキュアモード専用のレジスタを使用する。ノンセキュアモードでは、プロセッサ１０は、ノンセキュアモード専用のレジスタを使用する。
【００１５】
なお、セキュアモードでは、プロセッサ１０は、ノンセキュアモード専用のレジスタへの読み出しアクセスおよび書き込みアクセスが可能であるものとする。レジスタは、プログラムの実行において使用されるデータと、プログラムカウンタとを保持する。プログラムカウンタは、次に実行すべき命令が格納されているメモリアドレスを示す値とする。
【００１６】
プロセッサ１０は、セキュリティモードを遷移させるモード遷移命令を持つ。情報処理装置の起動時及びリセット時において、プロセッサ１０は、セキュリティモードをセキュアモードとする。
【００１７】
メインメモリ１２は、汎用の主記憶装置である。メインメモリ１２は、プロセッサ１０がアクセス可能なメモリ領域を備える。メインメモリ１２は、例えば、ＤＲＡＭ，ＳＲＡＭ，ＮＡＮＤ，ＭＲＡＭなどのいずれかとする。
【００１８】
メモリコントローラ１１は、メインメモリ１２を制御する。メモリコントローラ１１は、プロセッサ１０からの指示に基づいて、メインメモリ１２に対するデータの読み出し及び書き込みを実施する。メモリコントローラ１１は、メインメモリ１２から読み出されたデータと、メインメモリ１２への書き込みの対象とするデータとを受信する。この他、メモリコントローラ１１は、メインメモリ１２のリフレッシュを実施する。例えば、メインメモリ１２としてＤＲＡＭを用いる場合、メモリコントローラ１１は、ＤＲＡＭコントローラとする。
【００１９】
メモリコントローラ１１は、プロセッサ１０のセキュリティモードがセキュアモード及びノンセキュアモードのいずれであるかを識別する。例えば、プロセッサ１０は、現在のセキュリティモードがセキュアモード及びノンセキュアモードのいずれであるかを示す状態情報を送信する。メモリコントローラ１１は、プロセッサ１０からの状態情報を受信することで、プロセッサ１０がセキュアモード及びノンセキュアモードのいずれであるかを識別する。
【００２０】
メモリコントローラ１１は、プロセッサ１０のセキュリティモードに応じて、メインメモリ１２のうち特定のメモリ領域へのアクセスを制限する機能を持つ。メモリコントローラ１１は、識別されたセキュリティモードに応じて、メインメモリ１２のメモリ領域ごとに対するアクセス制限を実施する。
【００２１】
アクセス制限に違反するアクセスがあった場合、メモリコントローラ１１は、かかるアクセスを拒否するとともに、例外の発生を示す例外信号をプロセッサ１０へ送信する。かかる例外信号を受信すると、プロセッサ１０は、例外処理として、セキュリティモードをノンセキュアモードからセキュアモードへ遷移させる。
【００２２】
記憶装置１４は、メインメモリ１２より大容量な不揮発性メモリである。記憶装置１４は、プロセッサ１０がアクセス可能なストレージ領域を備える。記憶装置１４は、例えば、ＨＤＤ，ＳＳＤ，ＳＤカードなどのいずれかとする。情報処理装置は、複数の記憶装置１４を備えたものであっても良い。情報処理装置が備える複数の記憶装置１４は、いずれも同一種類の記憶装置１４であるほか、互いに異なる種類の記憶装置１４が含まれることとしても良い。
【００２３】
ストレージコントローラ１３は、記憶装置１４を制御する。ストレージコントローラ１３は、プロセッサ１０からの指示に基づいて、記憶装置１４に対するデータの読み出し及び書き込みを実施する。ストレージコントローラ１３は、記憶装置１４から読み出されたデータと、記憶装置１４への書き込みの対象とするデータとを受信する。
【００２４】
ストレージコントローラ１３は、プロセッサ１０のセキュリティモードに応じて、記憶装置１４のうち特定のストレージ領域へのアクセスを制限する機能を持つ。ストレージコントローラ１３は、識別されたセキュリティモードに応じて、記憶装置１４のデータ領域ごとのアクセス制限を実施する。
【００２５】
記憶装置１４は、セキュア領域１８及びノンセキュア領域１９を備える。セキュア領域１８は、セキュアモード及びノンセキュアモードにおいてアクセスが許可されているストレージ領域である。ノンセキュア領域１９は、セキュアモードにおいてアクセスが制限され、かつノンセキュアモードにおいてアクセスが許可されているストレージ領域である。
【００２６】
記憶装置１４は、セキュア領域１８に、鍵２１、セキュアローダ２２及びセキュアインタープリタ２３が格納されている。記憶装置１４は、ノンセキュア領域１９に、暗号化プログラムバイナリ２４、暗号化メモリセクション情報２５及び汎用ＯＳ２６が格納されている。
【００２７】
鍵２１は、暗号化プログラムバイナリ２４と、暗号化メモリセクション情報２５との復号化に使用される。なお、暗号化プログラムバイナリ２４及び暗号化メモリセクション情報２５は、復号化に、共通の鍵２１を使用するもの、互いに異なる鍵２１を使用するもののいずれとしも良い。
【００２８】
暗号化プログラムバイナリ２４は、暗号化された保護対象プログラムである。保護対象プログラムは、改ざんの防止が所望されているプログラムバイナリとする。暗号化メモリセクション情報２５は、暗号化されたメモリセクション情報である。メモリセクション情報は、メインメモリ１２におけるプログラムの配置を定義する情報である。
【００２９】
図２は、保護対象プログラム、メモリセクション情報、暗号化プログラムバイナリ及び暗号化メモリセクション情報の関係を示す図である。保護対象プログラム３０は、コード領域３１及び保護データ領域３２を含む。暗号化プログラムバイナリ２４は、この保護対象プログラム３０を暗号化したものである。
【００３０】
保護対象プログラム３０のコード領域３１及び保護データ領域３２は、メモリセクション情報３３に従って、メインメモリ１２のメモリ領域に配置される。メモリセクション情報３３は、プログラムの実行を開始させる位置の情報を含む。暗号化メモリセクション情報２５は、このメモリセクション情報３３を暗号化したものである。
【００３１】
第１プログラムであるセキュアローダ２２は、暗号化プログラムバイナリ２４をロードするためのプログラムである。セキュアローダ２２は、暗号化プログラムバイナリ２４を、セキュアモードにて復号化する。セキュアローダ２２は、復号化された保護対象プログラムを、メインメモリ１２のメモリ領域に配置する。
【００３２】
第２プログラムであるセキュアインタープリタ２３は、ノンセキュアモードにて実行するプログラムに代行して、セキュアモードにおける保護対象プログラム３０へのアクセスを行うためのプログラムである。セキュアインタープリタ２３は、セキュアモードにて保護対象プログラム３０を実行する。
【００３３】
ブートロム１６は、ブートプログラム２７を格納する。ブートプログラム２７は、情報処理装置が起動する際に実行するプログラムコードである。情報処理装置の起動の際、プロセッサ１０は、まずブートロム１６からブートプログラム２７を読み出し、ブートプログラム２７の実行を開始する。
【００３４】
アクセス制限コントローラ１５は、ブートロム１６を制御する。アクセス制限コントローラ１５は、セキュアモードでのみ、ブートロム１６へのアクセスを許可する。
【００３５】
図３及び図４は、情報処理装置によるプログラム実行の手順を示すフローチャートである。図３のフローチャートは、情報処理装置の起動から、ノンセキュアモードでのプログラム実行の開始までの手順を示す。図４のフローチャートは、ノンセキュアモードでのプログラム実行を開始してからの手順を示す。図３のフローチャートは、動作が正常である場合における手順を示す。図４のフローチャートには、動作に異常があった場合における手順を含む。
【００３６】
情報処理装置の起動時、セキュリティモードは、セキュアモードであるものとする。情報処理装置を起動させると、ステップＳ１において、プロセッサ１０は、ブートロム１６からブートプログラム２７を読み出す。セキュアモードであるため、アクセス制限コントローラ１５は、プロセッサ１０によるブートロム１６へのアクセスを許可する。プロセッサ１０は、ブートプログラム２７を実行する。
【００３７】
ブートプログラム２７の実行により、プロセッサ１０は、記憶装置１４のセキュア領域１８から、鍵２１、セキュアローダ２２及びセキュアインタープリタ２３を読み出す。セキュアモードであるため、ストレージコントローラ１３は、プロセッサ１０によるセキュア領域１８へのアクセスを許可する。
【００３８】
ブートプログラム２７の実行により、プロセッサ１０は、メインメモリ１２のうちノンセキュアモードでのアクセスが禁止されているメモリ領域に、鍵２１、セキュアローダ２２及びセキュアインタープリタ２３を配置する。
【００３９】
ブートプログラム２７の実行により、プロセッサ１０は、記憶装置１４のノンセキュア領域１９から、汎用ＯＳ２６を読み出す。ブートプログラム２７の実行により、プロセッサ１０は、メインメモリ１２のうちノンセキュアモードでのアクセスが禁止されていないメモリ領域に、汎用ＯＳ２６を配置する。
【００４０】
図５は、メインメモリにおけるメモリ領域の設定及びデータ配置の例を示す図である。図５に示すメインメモリ１２−１は、ブートプログラム２７の実行により、鍵２１、セキュアローダ２２、セキュアインタープリタ２３及び汎用ＯＳ２６が配置されたときのメインメモリ１２とする。
【００４１】
メインメモリ１２は、第１メモリ領域４１、第２メモリ領域４２及び第３メモリ領域４３を備える。第１メモリ領域４１は、アクセス制限により、ノンセキュアモードでのデータの書き込み及び読み出しが禁止されるメモリ領域である。第２メモリ領域４２は、アクセス制限によりノンセキュアモードでのデータの書き込みが禁止され、かつノンセキュアモードでのデータの読み出しが許可されるメモリ領域である。第３メモリ領域４３は、ノンセキュアモードでのデータの書き込み及び読み出しが許可されるメモリ領域である。
【００４２】
各メモリ領域４１，４２，４３のうち、第１メモリ領域４１は、最もセキュリティレベルが高いメモリ領域である。第３メモリ領域４３は、最もセキュリティレベルが低いメモリ領域である。プロセッサ１０は、ブートプログラム２７の実行により、第１メモリ領域４１に、鍵２１、セキュアローダ２２及びセキュアインタープリタ２３を配置する。セキュアモードであるため、メモリコントローラ１１は、プロセッサ１０による第１メモリ領域４１へのアクセスを許可する。プロセッサ１０は、ブートプログラム２７の実行により、第３メモリ領域４３に汎用ＯＳ２６を配置する。
【００４３】
ステップＳ１にて、プロセッサ１０は、メインメモリ１２に鍵２１、セキュアローダ２２、セキュアインタープリタ２３及び汎用ＯＳ２６を配置してから、モード遷移命令を発行する。モード遷移命令の発行により、情報処理装置は、セキュアモードからノンセキュアモードへと、セキュリティモードを切り換える。
【００４４】
ノンセキュアモードへ移行すると、プロセッサ１０は、ステップＳ２において、メインメモリ１２から汎用ＯＳ２６を読み出し、汎用ＯＳ２６を起動させる。ステップＳ３にて、プロセッサ１０は、汎用ＯＳ２６の起動を完了する。次に、プロセッサ１０は、プログラムのロード処理を開始する。ステップＳ４にて、プロセッサ１０は、記憶装置１４のノンセキュア領域１９から、暗号化プログラムバイナリ２４及び暗号化メモリセクション情報２５を読み出す。
【００４５】
プロセッサ１０は、読み出された暗号化プログラムバイナリ２４と暗号化メモリセクション情報２５とを、メインメモリ１２のうち第３メモリ領域４３に配置する。図５に示すメインメモリ１２−２は、ロード処理により、暗号化プログラムバイナリ２４及び暗号化メモリセクション情報２５が配置されたときのメインメモリ１２とする。
【００４６】
メインメモリ１２に暗号化プログラムバイナリ２４及び暗号化メモリセクション情報２５を配置してから、プロセッサ１０は、ステップＳ５において、モード遷移命令を発行する。モード遷移命令の発行により、情報処理装置は、ノンセキュアモードからセキュアモードへ、セキュリティモードを切り換える。
【００４７】
セキュアモードへ移行すると、プロセッサ１０は、第１メモリ領域４１から鍵２１及びセキュアローダ２２を読み出す。セキュアモードであるため、メモリコントローラ１１は、プロセッサ１０による第１メモリ領域４１へのアクセスを許可する。次に述べるステップＳ６からステップＳ８の処理は、セキュアローダ２２の実行によるものである。
【００４８】
ステップＳ６において、プロセッサ１０は、セキュアローダ２２の実行により、第３メモリ領域４３から暗号化メモリセクション情報２５を読み出す。プロセッサ１０は、読み出された暗号化メモリセクション情報２５を、鍵２１を使用して復号化する。
【００４９】
ステップＳ７において、プロセッサ１０は、セキュアローダ２２の実行により、第３メモリ領域４３から暗号化プログラムバイナリ２４を読み出す。プロセッサ１０は、読み出された暗号化プログラムバイナリ２４を、鍵２１を使用して復号化する。
【００５０】
セキュアローダ２２の実行により、プロセッサ１０は、復号化された保護対象プログラム３０のうちのコード領域３１を、メインメモリ１２の第２メモリ領域４２に配置する。また、プロセッサ１０は、復号化された保護対象プログラム３０のうちの保護データ領域３２を、メインメモリ１２の第１メモリ領域４１に配置する。
【００５１】
プロセッサ１０は、復号化されたメモリセクション情報３３に従って、第２メモリ領域４２へコード領域３１を配置し、第１メモリ領域４１へ保護データ領域３２を配置する。セキュアモードであるため、メモリコントローラ１１は、プロセッサ１０による第１メモリ領域４１及び第２メモリ領域４２へのアクセスを許可する。図５に示すメインメモリ１２−３は、セキュアローダ２２の実行により、コード領域３１及び保護データ領域３２が配置されたときのメインメモリ１２とする。
【００５２】
メインメモリ１２にコード領域３１及び保護データ領域３２を配置してから、ステップＳ８において、プロセッサ１０は、ノンセキュアモードで使用されるレジスタに対し、プログラムカウンタの初期設定を行う。プロセッサ１０は、セキュアローダ２２の実行により、プログラムカウンタの初期設定を行う。
【００５３】
プログラムカウンタの初期設定を終えると、プロセッサ１０は、モード遷移命令を発行する。モード遷移命令の発行により、情報処理装置は、セキュアモードからノンセキュアモードへ、セキュリティモードを切り換える。
【００５４】
ノンセキュアモードへ移行すると、プロセッサ１０は、ステップＳ９にて、プログラムの実行を開始する。プロセッサ１０がプログラムを実行している間、メモリコントローラ１１は、プログラムの実行によるアクセス先を監視する。プログラムを実行する過程でアクセス先を監視する中、保護データ領域３２へのアクセスが確認されない場合（ステップＳ１０，Ｎｏ）、プロセッサ１０は、ノンセキュアモードでのプログラムの実行を継続する（ステップＳ１５）。ノンセキュアモードでのプログラムの実行を継続する間、メモリコントローラ１１は、アクセス先の監視を継続する。
【００５５】
プログラムを実行する過程でアクセス先を監視する中、保護データ領域３２へのアクセスが確認された（ステップＳ１０，Ｙｅｓ）とする。この場合、メモリコントローラ１１は、かかるアクセスを拒否するとともに、例外の発生を示す例外信号をプロセッサ１０へ送信する。例外信号を受信すると、プロセッサ１０は、割り込みにより強制的にプログラムの実行を中断する。プログラムの実行を中断すると、プロセッサ１０は、例外処理として、モード遷移命令を発行する。モード遷移命令の発行により、情報処理装置は、ノンセキュアモードからセキュアモードへ、セキュリティモードを切り換える。
【００５６】
セキュアモードへ移行すると、プロセッサ１０は、第１メモリ領域４１からセキュアインタープリタ２３を読み出す。セキュアモードであるため、メモリコントローラ１１は、プロセッサ１０による第１メモリ領域４１へのアクセスを許可する。次に述べるステップＳ１１からステップＳ１３の処理は、セキュアインタープリタ２３の実行によるものである。
【００５７】
ステップＳ１１において、プロセッサ１０は、保護データ領域３２へのアクセスが、セキュアローダ２２によって第２メモリ領域４２に配置されたコード領域３１の命令によるものか否かを判断する。プロセッサ１０は、セキュアインタープリタ２３の実行により、かかる判断を行う。
【００５８】
プロセッサ１０は、ノンセキュアモードで動作させるレジスタから、例外を発生させたプログラムカウンタを取得する。プロセッサ１０は、取得されたプログラムカウンタが、セキュアローダ２２によって配置されたコード領域３１の位置であるか否かを判断する。
【００５９】
保護データ領域３２へのアクセスがコード領域３１の命令によるものであった場合（ステップＳ１１，Ｙｅｓ）、セキュアインタープリタ２３の実行により、プロセッサ１０は、プログラムカウンタによって示された位置の命令を解釈する（ステップＳ１２）。プロセッサ１０は、プログラムカウンタによって示された位置の命令に従って、次に説明する（１）及び（２）のいずれかの処理を実行する。
【００６０】
（１）ステップＳ１２で解釈された命令が、メインメモリ１２からのデータの読み出しを指示するものであり、例えばアセンブラコードが「ＬＤＲ＿ｒ０，［ｒ１］」であったとする。この命令は、レジスタｒ１に書き込まれているメモリアドレスへアクセスし、そのメモリアドレスの位置に書き込まれている値をレジスタｒ０に書き込むことを指示するものである。プロセッサ１０は、ノンセキュアモードで使用されるレジスタｒ１の値を、セキュアモードであるステップＳ１２にて取得する。プロセッサ１０は、その値が示すメモリアドレスの位置に書き込まれている値を読み出す。プロセッサ１０は、読み出された値を、ノンセキュアモードで使用されるレジスタｒ０へ書き込む。
【００６１】
（２）ステップＳ１２で解釈された命令が、メインメモリ１２へのデータの書き込みを指示するものであり、例えばアセンブラコードが「ＳＴＲ＿ｒ０，［ｒ１］」であったとする。この命令は、レジスタｒ１に書き込まれているメモリアドレスへ、レジスタｒ０の値を書き込むことを指示するものである。セキュアモードであるステップＳ１２にて、プロセッサ１０は、ノンセキュアモードで使用されるレジスタｒ０及びｒ１の値を、セキュアモードであるステップＳ１２にて取得する。プロセッサ１０は、レジスタｒ１の値が示すメモリアドレスへ、レジスタｒ０の値を書き込む。
【００６２】
プロセッサ１０は、ノンセキュアモードで使用されるレジスタに対し、プログラムカウンタの設定を適宜行う。プロセッサ１０は、ノンセキュアモードで動作させるレジスタのプログラムカウンタを、ステップＳ１２で実行した命令の数だけ進める。プロセッサ１０は、セキュアインタープリタ２３の実行により、プログラムカウンタの設定を行う（ステップＳ１３）。
【００６３】
プログラムカウンタの設定を終えると、プロセッサ１０は、モード遷移命令を発行する。モード遷移命令の発行により、情報処理装置は、セキュアモードからノンセキュアモードへ、セキュリティモードを切り換える。ノンセキュアモードへ移行すると、プロセッサ１０は、プログラムの実行を継続する（ステップＳ１４）。
【００６４】
一方、保護データ領域３２へのアクセスが、メインメモリ１２のうちコード領域３１以外の命令によるものであった場合（ステップＳ１１，Ｎｏ）、プロセッサ１０は、アクセスに異常があったとして、エラー処理を実行する。プロセッサ１０は、エラー処理として、例えば、次に説明する（３），（４）及び（５）のいずれかの処理を実行する。
【００６５】
（３）プログラムによる全ての処理の実行を、強制終了する。
（４）ステップＳ１２の処理をスキップし、ステップＳ１３の処理に進む。
（５）ステップＳ１２の処理を、処理内容を一部変更した上で実施する。例えば、ステップＳ１２で解釈された命令が、メインメモリ１２からのデータの読み出しを指示するものであった場合であっても、プロセッサ１０は、メモリアドレスの位置に書き込まれている値を読み出さない。プロセッサ１０は、ランダムな値を例えばレジスタｒ０へ書き込む。一方、ステップＳ１２で解釈された命令が、メインメモリ１２へのデータの書き込みを指示するものであった場合、プロセッサ１０は、メインメモリ１２へのデータの書き込みを行わない。
【００６６】
なお、プロセッサ１０は、ノンセキュアモードで動作させるレジスタから、例外を発生させたプログラムカウンタの値を取得する。プロセッサ１０は、当該プログラムカウンタの値を、メインメモリ１２または記憶装置１４に格納する。メインメモリ１２は、当該プログラムカウンタの値を、第１メモリ領域４１、第２メモリ領域４２及び第３メモリ領域４３のいずれに格納しても良い。記憶装置１４は、当該プログラムカウンタの値を、セキュア領域１８及びノンセキュア領域１９のいずれに格納しても良い。プロセッサ１０は、当該プログラムカウンタの値をメインメモリ１２または記憶装置１４に格納してから、上記（３），（４）及び（５）のいずれかの処理を実行する。
【００６７】
以上により、情報処理装置は、セキュアローダ２２およびセキュアインタープリタ２３を使用する一連の処理を終了する。その後も、ノンセキュアモードでのプログラムの実行を継続する間、メモリコントローラ１１は、アクセス先の監視を継続する。保護データ領域３２へのアクセスがあるごとに、情報処理装置は、セキュアモードへ移行し、セキュアインタープリタ２３を使用する処理を実施する。
【００６８】
実施形態によると、情報処理装置は、アクセス制限としてノンセキュアモードでの書き込みが禁止された第２メモリ領域４２にコード領域３１を配置する。情報処理装置は、アクセス制限としてノンセキュアモードでの書き込み及び読み出しが禁止された第１メモリ領域４１に保護データ領域３２を配置する。情報処理装置は、セキュアモードにて動作させるセキュアローダ２２を使用して、メインメモリ１２にコード領域３１及び保護データ領域３２を配置する。
【００６９】
情報処理装置は、保護対象プログラム３０のロード処理にセキュアローダ２２を使用することで、セキュリティレベルの低いモードにて動作させるＯＳを使用する場合であっても、改ざんされたプログラムの実行を抑止できる。
【００７０】
第２メモリ領域４２にコード領域３１が配置されることで、メモリコントローラ１１は、ノンセキュアモードにおけるコード領域３１への書き込みアクセスを遮断する。情報処理装置は、コード領域３１の命令が、セキュリティレベルが低いモードにて不正に書き換えられることを抑制できる。
【００７１】
第１メモリ領域４１に保護データ領域３２が配置されることで、メモリコントローラ１１は、ノンセキュアモードにおける保護データ領域３２への書き込みアクセスと読み出しアクセスとを遮断する。情報処理装置は、保護データ領域３２のデータが、セキュリティレベルが低いモードにて不正に書き換えられること、及び読み出されることを抑制できる。
【００７２】
情報処理装置は、保護対象プログラム３０の実行には、セキュアモードにて動作させるセキュアインタープリタ２３を常に使用する。情報処理装置は、セキュリティレベルが低いモードにおける保護対象プログラム３０の実行を抑制できる。以上により、情報処理装置は、ＯＳ上で動作するプログラムの改ざんを防止し、また特定のデータ領域のデータを保護することができる。
【００７３】
情報処理装置において実行されるプログラムは、保護データ領域３２へのアクセスを伴う部分以外については、汎用ＯＳ２６上のプログラムと同様となる。したがって、情報処理装置において実行されるプログラムは、汎用ＯＳ２６のライブラリ及びシステムコールを使用して容易に開発することができる。また、情報処理装置において実行されるプログラムは、汎用ＯＳ２６の開発ツールを使用して、大規模なプログラム開発も可能となる。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１０  プロセッサ、１１  メモリコントローラ、１２  メインメモリ、１８  セキュア領域、１９  ノンセキュア領域、２１  鍵、２２  セキュアローダ、２３  セキュアインタープリタ、２４  暗号化プログラムバイナリ、２５  暗号化メモリセクション情報、２７  ブートプログラム、３０  保護対象プログラム、３１  コード領域、３２  保護データ領域、３３  メモリセクション情報、４１  第１メモリ領域、４２  第２メモリ領域、４３  第３メモリ領域。
【図１】
0005911835.tif 000002
【図２】
0005911835.tif 000003
【図３】
0005911835.tif 000004
【図４】
0005911835.tif 000005
【図５】
0005911835.tif 000006