(57)【特許請求の範囲】
【請求項１】
動作モードとして、特権モードと非特権モードとを有するプロセッサと、
前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、
前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部と
を備え、
前記トラステッドメモリ制御部は、
前記プロセッサが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードを判定し、
前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止し、
前記情報処理装置は、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリと、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードの判定と、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定とを行い、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記情報処理装置は、さらに、
前記通常メモリに記憶しているプログラムがアクセス不可能な内部保護メモリを備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサが前記トラステッドメモリへアクセスしたか否かを判定する領域判定部を備え、
前記領域判定部は、
前記トラステッドメモリの領域を示す領域情報を記憶している領域情報格納部を有し、
前記プロセッサが前記トラステッドメモリもしくは前記通常メモリにアクセスした時に、
前記領域情報格納部に記憶されている前記領域情報を用いて前記トラステッドメモリへのアクセスであるか否かを判定し、
前記領域情報は、前記内部保護メモリに記憶されている設定プログラムのみによって設定される
情報処理装置。
【請求項２】
動作モードとして、特権モードと非特権モードとを有するプロセッサと、
前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、
前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部と
を備え、
前記トラステッドメモリ制御部は、
前記プロセッサが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードを判定し、
前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止し、
前記情報処理装置は、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリと、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードの判定と、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定とを行い、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記通常メモリは、さらに、
前記プロセッサの動作モードが特権モードの時に動作し、プログラム識別子を持たない特権モードプログラムと、
前記プロセッサの動作モードが非特権モードの時に動作し、プログラム識別子を持つ非特権モードプログラムとを記憶しており、
前記トラステッドメモリ制御部は、さらに、
前記特権モードプログラムによる前記トラステッドメモリへのアクセスを許可する前記非特権モードプログラムの前記プログラム識別子のリストであるプログラムリストを格納しており、
前記プロセッサ上で実行されている前記非特権モードプログラムが呼び出した前記特権モードプログラムが前記トラステッドメモリへアクセスした時に、
前記特権モードプログラムを呼び出した前記非特権モードプログラムの前記プログラム識別子が前記プログラムリストに含まれる場合には、前記特権モードプログラムに前記トラステッドメモリへのアクセスを許可する
情報処理装置。
【請求項３】
情報処理装置で動作するメモリアクセス制御方法であって、
前記情報処理装置は、
動作モードとして、特権モードと非特権モードとを有するプロセッサと、
前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、
前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部と
を備え、
前記メモリアクセス制御方法は、
前記プロセッサが前記トラステッドメモリへアクセスした時に、前記トラステッドメモリ制御部が、前記プロセッサの動作モードを判定し、
前記プロセッサの動作モードが特権モードである場合に、前記トラステッドメモリ制御部が、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止し、
前記情報処理装置は、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリと、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記トラステッドメモリ制御方法は、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記トラステッドメモリ制御部が、
前記プロセッサの動作モードの判定と、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定とを行い、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記情報処理装置は、さらに、
前記通常メモリに記憶しているプログラムがアクセス不可能な内部保護メモリを備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサが前記トラステッドメモリへアクセスしたか否かを判定する領域判定部を備え、
前記領域判定部は、
前記トラステッドメモリの領域を示す領域情報を記憶している領域情報格納部を有し、
前記トラステッドメモリ制御方法では、
前記プロセッサが前記トラステッドメモリもしくは前記通常メモリにアクセスした時に、
前記トラステッドメモリ制御部が、前記領域情報格納部に記憶されている前記領域情報を用いて前記トラステッドメモリへのアクセスであるか否かを判定し、
前記領域情報は、前記内部保護メモリに記憶されている設定プログラムのみによって設定される
メモリアクセス制御方法。
【請求項４】
情報処理装置で動作するメモリアクセス制御方法であって、
前記情報処理装置は、
動作モードとして、特権モードと非特権モードとを有するプロセッサと、
前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、
前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部と
を備え、
前記メモリアクセス制御方法は、
前記プロセッサが前記トラステッドメモリへアクセスした時に、前記トラステッドメモリ制御部が、前記プロセッサの動作モードを判定し、
前記プロセッサの動作モードが特権モードである場合に、前記トラステッドメモリ制御部が、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止し、
前記情報処理装置は、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリと、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記トラステッドメモリ制御方法は、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記トラステッドメモリ制御部が、
前記プロセッサの動作モードの判定と、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定とを行い、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記通常メモリは、さらに、
前記プロセッサの動作モードが特権モードの時に動作し、プログラム識別子を持たない特権モードプログラムと、
前記プロセッサの動作モードが非特権モードの時に動作し、プログラム識別子を持つ非特権モードプログラムとを記憶しており、
前記トラステッドメモリ制御部は、さらに、
前記特権モードプログラムによる前記トラステッドメモリへのアクセスを許可する前記非特権モードプログラムの前記プログラム識別子のリストであるプログラムリストを格納しており、
前記トラステッドメモリ制御方法は、
前記プロセッサ上で実行されている前記非特権モードプログラムが呼び出した前記特権モードプログラムが前記トラステッドメモリへアクセスした時に、
前記トラステッドメモリ制御部が、前記特権モードプログラムを呼び出した前記非特権モードプログラムの前記プログラム識別子が前記プログラムリストに含まれる場合には、前記特権モードプログラムに前記トラステッドメモリへのアクセスを許可する
メモリアクセス制御方法。
【請求項５】
メモリアクセスを制御するためのプログラムであって、
コンピュータのプロセッサは、動作モードとして、特権モードと非特権モードとを有し、
コンピュータのメモリは、前記プロセッサが前記非特権モードの時にアクセスする保護データを記憶しているトラステッドメモリ領域を有し、
前記プロセッサが前記トラステッドメモリ領域へアクセスした時に、前記プロセッサが、前記プロセッサの動作モードを判定するステップと、
前記プロセッサの動作モードが特権モードである場合に、前記プロセッサが、前記プロセッサによる前記トラステッドメモリ領域へのアクセスを禁止するステップと、
をコンピュータに実行させ、
前記コンピュータのメモリは、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリ領域と、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記プログラムは、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードの判定ステップと、
前記トラステッドメモリ領域へアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定ステップとをコンピュータに実行させ、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリ領域へのアクセスを許可せず、
コンピュータのメモリは、さらに、
前記通常メモリ領域に記憶しているプログラムがアクセス不可能な内部保護メモリ領域と、
前記プロセッサが前記トラステッドメモリへアクセスしたか否かを判定する領域判定部とを備え、
前記領域判定部は、
前記トラステッドメモリの領域を示す領域情報を記憶している領域情報格納部を有し、
前記プログラムは、
前記プロセッサが前記トラステッドメモリもしくは前記通常メモリにアクセスした時に、
前記領域情報格納部に記憶されている前記領域情報を用いて前記トラステッドメモリ領域へのアクセスであるか否かを判定するステップを含み、
前記領域情報は、前記内部保護メモリに記憶されている設定プログラムのみによって設定される
プログラム。
【請求項６】
メモリアクセスを制御するためのプログラムであって、
コンピュータのプロセッサは、動作モードとして、特権モードと非特権モードとを有し、
コンピュータのメモリは、前記プロセッサが前記非特権モードの時にアクセスする保護データを記憶しているトラステッドメモリ領域を有し、
前記プロセッサが前記トラステッドメモリ領域へアクセスした時に、前記プロセッサが、前記プロセッサの動作モードを判定するステップと、
前記プロセッサの動作モードが特権モードである場合に、前記プロセッサが、前記プロセッサによる前記トラステッドメモリ領域へのアクセスを禁止するステップと
をコンピュータに実行させ、
前記コンピュータのメモリは、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリ領域と、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記プログラムは、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードの判定ステップと、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定ステップとをコンピュータに実行させ、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記通常メモリ領域は、さらに、
前記プロセッサの動作モードが特権モードの時に動作し、プログラム識別子を持たない特権モードプログラムと、
前記プロセッサの動作モードが非特権モードの時に動作し、プログラム識別子を持つ非特権モードプログラムとを記憶しており、
前記プログラムは、さらに、
前記特権モードプログラムによる前記トラステッドメモリへのアクセスを許可する前記非特権モードプログラムの前記プログラム識別子のリストであるプログラムリストを格納しており、
前記プロセッサ上で実行されている前記非特権モードプログラムが呼び出した前記特権モードプログラムが前記トラステッドメモリへアクセスした時に、
前記特権モードプログラムを呼び出した前記非特権モードプログラムの前記プログラム識別子が前記プログラムリストに含まれる場合には、前記特権モードプログラムに前記トラステッドメモリへのアクセスを許可する
プログラム。
【請求項７】
動作モードとして、特権モードと非特権モードとを有するプロセッサと、
前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリへのアクセスを制御するトラステッドメモリ制御部と
を備え、
前記トラステッドメモリ制御部は、
前記プロセッサが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードを判定し、
前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止し、
前記情報処理装置は、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリと、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードの判定と、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定とを行い、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記情報処理装置は、さらに、
前記通常メモリに記憶しているプログラムがアクセス不可能な内部保護メモリを備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサが前記トラステッドメモリへアクセスしたか否かを判定する領域判定部を備え、
前記領域判定部は、
前記トラステッドメモリの領域を示す領域情報を記憶している領域情報格納部を有し、
前記プロセッサが前記トラステッドメモリもしくは前記通常メモリにアクセスした時に、
前記領域情報格納部に記憶されている前記領域情報を用いて前記トラステッドメモリへのアクセスであるか否かを判定し、
前記領域情報は、前記内部保護メモリに記憶されている設定プログラムのみによって設定される
集積回路。
【請求項８】
動作モードとして、特権モードと非特権モードとを有するプロセッサと、
前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリへのアクセスを制御するトラステッドメモリ制御部と
を備え、
前記トラステッドメモリ制御部は、
前記プロセッサが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードを判定し、
前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止し、
前記情報処理装置は、さらに、
各々がプログラム識別子を有する少なくとも１以上のプログラムを記憶している通常メモリと、
前記トラステッドメモリへのアクセスを許可するプログラムのプログラム識別子である判定用プログラム識別子を記憶している判定用識別子格納部と
を備え、
前記トラステッドメモリ制御部は、さらに、
前記プロセッサ上で実行されている前記１以上のプログラムが前記トラステッドメモリへアクセスした時に、
前記プロセッサの動作モードの判定と、
前記トラステッドメモリへアクセスした前記プログラムのプログラム識別子と前記判定用識別子格納部に記憶されている前記判定用プログラム識別子とが一致するか否かの判定とを行い、
前記プロセッサの動作モードが特権モードであるか、または、前記プログラム識別子と前記判定用プログラム識別子が一致しない場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを許可せず、
前記通常メモリは、さらに、
前記プロセッサの動作モードが特権モードの時に動作し、プログラム識別子を持たない特権モードプログラムと、
前記プロセッサの動作モードが非特権モードの時に動作し、プログラム識別子を持つ非特権モードプログラムとを記憶しており、
前記トラステッドメモリ制御部は、さらに、
前記特権モードプログラムによる前記トラステッドメモリへのアクセスを許可する前記非特権モードプログラムの前記プログラム識別子のリストであるプログラムリストを格納しており、
前記プロセッサ上で実行されている前記非特権モードプログラムが呼び出した前記特権モードプログラムが前記トラステッドメモリへアクセスした時に、
前記特権モードプログラムを呼び出した前記非特権モードプログラムの前記プログラム識別子が前記プログラムリストに含まれる場合には、前記特権モードプログラムに前記トラステッドメモリへのアクセスを許可する
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データへの不正アクセスを防止する情報処理装置に関する。
【背景技術】
【０００２】
従来のテレビまたは携帯電話では、ユーザが機器購入後、機能を新たに追加するために、アプリケーションプログラム（以下、「アプリ」という）をダウンロードし、利用することが可能である。この様なアプリは、従来、機器内の各種リソースに対するアクセスが制限されていた。しかし、近年、多種多様なアプリを開発可能にするために、アクセス制限を緩和し、様々なリソースへのアクセスを可能にした機器が登場してきている。将来的には、アプリだけでなくデバイスドライバプログラム（以下、「デバドラ」という）も、ダウンロード可能にすることで、より多くのリソースにアクセス可能な機器が登場するものと考えられる。特に、デバドラがインストール可能になることにより、ユーザは、購入後の機器に対して、新たなハードウェアの追加が可能になり、機能追加の幅が現在と比べて拡大する。
【０００３】
また、従来、上記のようなアプリは、特定のアプリ開発会社のみが開発および配布をしている。しかし、近年、一般ユーザもアプリの開発および配布が可能な仕組みができつつある。この様な仕組みの中では、一般ユーザがアプリを簡単に開発可能にするために、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（以下、「ＰＣ」という）で一般的に利用されている開発ツールが利用可能であったり、販売されている機器に対してデバッグ装置が接続可能であったりする。
【０００４】
一方、ＰＣまたは携帯電話などに格納されている個人情報などのデータの漏えいが問題になっている。特にＰＣについては、インターネットなどのオープンなネットワークからダウンロードされる不正なダウンロードプログラムによって、ＰＣの記憶装置に格納されている個人情報などのデータが読み取られ、ユーザの意図に反して、データがネットワークを介してＰＣの外部に送付されるなどの行為が行われている。不正なダウンロードプログラムは、メールを利用するなどしてユーザに有益なプログラムだと思わせダウンロードさせたり、ＰＣ上で動作するプログラムの脆弱性を衝いてダウンロードさせたりする。
【０００５】
この様に、ＰＣ、テレビまたは携帯電話などにおいて、ダウンロードしたアプリまたはデバドラが多くのリソースにアクセス可能である、または、一般ユーザがアプリまたはデバドラを開発および配布可能であることで、機器に格納された個人情報などに対する攻撃の脅威が増加する。具体的には、悪意を持った攻撃者による、攻撃用のアプリ（以下、「不正アプリ」という）または攻撃用のデバドラ（以下、「不正デバドラ」という）の開発またはインストールが、容易になる。これにより、不正アプリまたは不正デバドラが機器内部の情報にアクセス可能となり、情報の漏えいまたは改ざんといった攻撃が行われる危険性が増加する。
【０００６】
この様な攻撃は、主に不正アプリを使用し、機器内部の不揮発性記憶装置に格納されているファイルに対して行われることが多く、この様な攻撃に対してはファイルを暗号化して対処することが一般的である。しかし、アプリがデータを使用する時には、暗号化されたファイルを復号する必要があり、その復号したタイミングを狙って攻撃される危険性がある。特に、不正デバドラは、機器内のすべてのメモリにアクセス可能である。このため、不正デバドラが、動作中のアプリがＲＡＭ上に展開しているデータにアクセスし、データを漏えいまたは改ざんする危険性が増加する。
【０００７】
従来、ＲＡＭ上のデータへの不正なアクセスを防止する方法として、メモリ管理ユニット（以下、ＭＭＵと記す）を利用する方法、またはメモリ保護ユニット（Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ）を利用する方法がある（例えば、特許文献１参照）。図４０は、前記特許文献１に記載された従来のメモリアクセス保護方式を示す図である。
【０００８】
図４０において、プログラム領域生成部１１およびプログラム制御部１２は、メモリ（図示しない）上のシステムコアエリアに置かれるプログラムであり、プログラム管理エリア１４は、メモリ（図示しない）上のシステムコアエリアに置かれるデータであり、アクセスチェック機構９は、ハードウェアである。メモリ（図示しない）は、システムプログラムの内のコアとなるプログラム用のシステムコアエリアの他に、通常のシステムプログラム用のシステムエリアとユーザレベルプログラム用のユーザエリアとに区分して使用される。
【０００９】
プログラム制御部１２は操作者からの指示によりプログラムファイル（図示しない）をメモリ（図示しない）上のユーザエリアへロードし、プログラム識別子を付与する。また、プログラム制御部１２は、プログラム領域生成部１１に対して、ロードしたプログラムファイルの実行に必要なメモリ上の領域の確保と、属性表生成とを指示する。プログラム制御部１２は、プログラム領域生成部１１から、属性表のアドレスを得て、アクセスチェック機構９に属性表のロードを指示する。また、プログラム制御部１２は、そのほか、プログラムファイルの実行に必要な設定を行い、当該プログラムの実行を開始する。
【００１０】
プログラム領域生成部１１は、ロードされるプログラムのプログラムファイルより、命令別、データ別およびスタック別にそれぞれセグメントを列挙する。プログラム領域生成部１１は、属性に関する指定に基づいてプログラムをグループ化する。プログラム領域生成部１１は、各グループにそのサイズに応じてページ識別子（仮の連番）と属性（実行可、読み出し可、書き込み可、キャッシュバイパス）とを付与し、属性表を作成する。プログラム領域生成部１１は、作成した属性表のアドレスをプログラム制御部１２に返すとともに、その属性表を属性エリアディレクトリ（ＡＴＤＲ）１６に登録する。
【００１１】
プログラム管理エリア１４は、属性エリアディレクトリ（ＡＴＤＲ）１６と属性エリア１８とを含む。属性エリアディレクトリ１６には、プログラム単位で、プログラム識別子と属性エリアアドレスとが格納される。属性エリア１８には、プログラム単位で、属性ごとのビットマップを含む属性表が格納される。属性表は、メモリ（図示しない）の全領域を所定数のブロックにブロック化したものであり、そのページブロック番号と、ブロックの各ページの属性ごとのビットマップとを含む。
【００１２】
アクセスチェック機構９は、メモリ（図示しない）上の属性表の写しを持ち、命令演算処理部（図示しない）がメモリへアクセスする時に、アクセス種別を指定するアクセスコード（Ｅ：命令の実行、Ｒ：読み出し、Ｗ：書き込み）とアクセスしたページの属性とをつき合わせチェックし、チェック結果に応じメモリアクセスを許可または抑制する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特許第３６０７５４０号公報
【特許文献２】特開２００５−０１１３３６号公報
【非特許文献】
【００１４】
【非特許文献１】岡本龍明、山本博資、「現代暗号」、産業図書（１９９７年）
【非特許文献２】黒澤馨、尾形わかは、「現代暗号の基礎数理」、コロナ社（２００４年）
【非特許文献３】ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．５０９  （１９９７  Ｅ）：  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  −  Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  −  Ｔｈｅ  Ｄｉｒｅｃｔｏｒｙ：  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ，１９９７
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、前記従来の構成を、テレビまたは携帯電話などで広く使用されているＬｉｎｕｘ（登録商標）などの汎用オペレーティングシステムに適用する時に、システムコアエリアに含まれるプログラムとシステムエリアに含まれるプログラムとは、同一のモード（特権モード）で動作させる必要がある。そのため、不正デバドラがインストールされ、特権モードで動作した時に、特権モードで動作するプログラムに対するメモリアクセス保護機構がないため、不正デバドラによりＲＡＭ上のデータが不正にアクセスされるという課題を有している。
【００１６】
また、前記従来の構成では、メモリアクセスの許可または不許可を決定する属性表の生成を、特権モードのプログラムが行う。このため、不正デバドラによって属性表が不正に生成、または、改ざんされる可能性がある。そのため、不正アプリが他のアプリに割り当てられたメモリ領域へアクセス可能になるように、不正デバドラが不正アプリの属性表を改ざんすることができる。このことにより、不正アプリが他のアプリが管理するＲＡＭ上のデータに不正アクセスすることができるという課題を有している。
【００１７】
本発明は、前記従来の課題を解決するもので、不正アプリまたは不正デバドラによる他のアプリが管理するＲＡＭ上のデータへのアクセスを防止可能としたメモリアクセス保護機能を有する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１８】
前記従来の課題を解決するために、本発明の情報処理装置は、動作モードとして、特権モードと非特権モードとを有するプロセッサと、前記プロセッサが前記非特権モードの時に前記プロセッサ上で実行されるプログラムが利用する保護データを記憶しているトラステッドメモリと、前記トラステッドメモリへのアクセスを制御するトラステッドメモリ制御部とを備え、前記トラステッドメモリ制御部は、前記プロセッサが前記トラステッドメモリへアクセスした時に、前記プロセッサの動作モードを判定し、前記プロセッサの動作モードが特権モードである場合に、前記プロセッサによる前記トラステッドメモリへのアクセスを禁止する。
【００１９】
本構成によって、特権モードで動作するプログラムから、アプリが使用する保護データ（情報資産）へのアクセスを防止することができる。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
【００２０】
なお、本発明は、このような特徴的な処理部を備える情報処理装置として実現することができるだけでなく、情報処理装置に含まれる特徴的な処理部が実行する処理をステップとするメモリアクセス制御方法として実現することができる。また、情報処理装置に含まれる特徴的な処理部としてコンピュータを機能させるためのプログラムまたはメモリアクセス制御方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムを、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等のコンピュータ読取可能な非一時的な記録媒体またはインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
【発明の効果】
【００２１】
本発明によると、不正アプリまたは不正デバドラによる他のアプリが管理するＲＡＭ上のデータへのアクセスを防止可能としたメモリアクセス保護機能を有する情報処理装置を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明の実施の形態１におけるアプリ配信システムの全体構成図である。
【図２】図２は、本発明の実施の形態１における機器のソフトウェア構成図である。
【図３】図３は、本発明の実施の形態１における機器のハードウェア構成図である。
【図４】図４は、本発明の実施の形態１における暗号化された保護データの構成図である。
【図５】図５は、本発明の実施の形態１におけるアプリ配信サーバの構成図である。
【図６】図６は、本発明の実施の形態１における開発装置の構成図である。
【図７】図７は、本発明の実施の形態１におけるパッケージ生成部の構成図である。
【図８】図８は、本発明の実施の形態１におけるダウンロードアプリパッケージの構成図である。
【図９】図９は、本発明の実施の形態１におけるセキュアブートのフローチャートである。
【図１０】図１０は、本発明の実施の形態１における保護データの読み込み処理のフローチャートである。
【図１１】図１１は、本発明の実施の形態１における復号処理のフローチャートである。
【図１２】図１２は、本発明の実施の形態１における保護データの書き込み処理のフローチャートである。
【図１３】図１３は、本発明の実施の形態１における暗号処理のフローチャートである。
【図１４】図１４は、本発明の実施の形態１におけるトラステッドメモリ制御部の構成図である。
【図１５】図１５は、本発明の実施の形態１におけるアクセス判定部の構成図である。
【図１６】図１６は、本発明の実施の形態１における領域判定部の構成図である。
【図１７Ａ】図１７Ａは、本発明の実施の形態１におけるアドレスリストの構成図である。
【図１７Ｂ】図１７Ｂは、本発明の実施の形態１におけるアドレスリストの構成図である。
【図１８】図１８は、本発明の実施の形態１におけるモード判定部の構成図である。
【図１９】図１９は、本発明の実施の形態１におけるプログラム・領域対応判定部の構成図である。
【図２０Ａ】図２０Ａは、本発明の実施の形態１におけるアプリＩＤ・領域対応リストの構成図である。
【図２０Ｂ】図２０Ｂは、本発明の実施の形態１におけるアプリＩＤ・領域対応リストの構成図である。
【図２１】図２１は、本発明の実施の形態１におけるアクセス判定部の判定処理のフローチャートである。
【図２２】図２２は、本発明の実施の形態１における領域判定部の判定処理のフローチャートである。
【図２３】図２３は、本発明の実施の形態１におけるプログラム・領域対応判定部の判定処理のフローチャートである。
【図２４】図２４は、本発明の実施の形態１における設定値の生成処理のフローチャートである。
【図２５】図２５は、本発明の実施の形態１におけるメモリ設定部の設定解除依頼処理のフローチャートである。
【図２６】図２６は、本発明の実施の形態２におけるトラステッドメモリ制御部の構成図である。
【図２７】図２７は、本発明の実施の形態２におけるプログラム・領域判定部の構成図である。
【図２８Ａ】図２８Ａは、本発明の実施の形態２におけるアプリＩＤ・アドレス対応リストの構成図である。
【図２８Ｂ】図２８Ｂは、本発明の実施の形態２におけるアプリＩＤ・アドレス対応リストの構成図である。
【図２９】図２９は、本発明の実施の形態２におけるアクセス判定部の判定処理のフローチャートである。
【図３０】図３０は、本発明の実施の形態２におけるプログラム・領域判定部の判定処理のフローチャートである。
【図３１】図３１は、本発明の実施の形態３における機器のハードウェア構成図である。
【図３２】図３２は、本発明の実施の形態３におけるトラステッドメモリ制御部の構成図である。
【図３３】図３３は、本発明の実施の形態３におけるアクセス判定部の構成図である。
【図３４】図３４は、本発明の実施の形態３における領域判定部の構成図である。
【図３５】図３５は、本発明の実施の形態４におけるアクセス判定部の構成図である。
【図３６】図３６は、本発明の実施の形態４におけるデバドラアクセス許可アプリＩＤリストの構成図である。
【図３７】図３７は、本発明の実施の形態４におけるアクセス判定部の判定処理のフローチャートである。
【図３８】図３８は、本発明の変形例２における機器のハードウェア構成図である。
【図３９】図３９は、本発明の変形例６における初期化処理のフローチャートである。
【図４０】図４０は、従来のメモリ属性管理方式の構成図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２４】
（実施の形態１）
＜アプリ配信システム１００の構成＞
図１は、本発明の実施の形態１におけるアプリ配信システム１００の構成図である。
【００２５】
図１において、アプリ配信システム１００は、機器１１０と、アプリ配信サーバ１２０と、開発装置１３０と、機器１１１とを含む。
【００２６】
機器１１０は、アプリ配信サーバ１２０とネットワークを介して接続され、アプリをダウンロードする。アプリをダウンロードした機器１１０は、アプリをインストールすることで、新しい機能を追加する。
【００２７】
アプリ配信サーバ１２０は、機器１１０および開発装置１３０とネットワークを介して接続され、開発装置１３０がアップロードしたアプリの管理、および、機器１１０へのアプリのダウンロード処理を行う。
【００２８】
開発装置１３０は、アプリ配信サーバ１２０とネットワークを介して接続され、機器１１０で動作するアプリの開発を行う装置である。また、開発装置１３０は、機器１１１とＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（以下、「ＵＳＢ」という）規格等のインターフェースで接続される。開発者は、開発装置１３０上でアプリを開発し、機器１１１上でアプリが想定通りの動作を行うかのテストを実施する。その後、開発装置１３０が開発したアプリをアプリ配信サーバ１２０へアップロードすることで、機器１１０でアプリが使用可能になる。なお、機器１１０と機器１１１は、同じ機能を持つ機器であり、一般ユーザによって使用されている（機器１１０）か、開発者によって使用されている（機器１１１）かが、異なるだけである。
【００２９】
＜機器１１０、１１１のソフトウェア構成＞
図２は、本発明の実施の形態１における機器１１０、１１１のソフトウェア構成図である。
【００３０】
図２において、機器１１０、１１１は、通常のソフトウェア実行環境（以下、「通常環境」という）１０００と、安全なソフトウェア実行環境（以下、「保護環境」という）１１００とを有する。機器１１０、１１１は、通常環境１０００と保護環境１１００とを切り替えながら、ソフトウェア（通常環境１０００または保護環境１１００のソフトウェア）を実行する。つまり、機器１１０、１１１は、通常環境１０００と保護環境１１００とのいずれかの環境を有し、両方の環境を有することはないし、いずれの環境も有しないこともない。機器１１０、１１１は、通常環境１０００では、通常環境１０００でのアクセスが許可されているメモリ領域のみにアクセスが可能であり、保護環境１１００では、通常環境１０００でのアクセスが許可されているメモリ領域と保護環境１１００でのアクセスが許可されているメモリ領域とにアクセスが可能である。
【００３１】
なお、通常環境１０００と保護環境１１００を切り替える方法に関しては、例えば特許文献２に記されている方式が使用できる。
【００３２】
＜通常環境１０００のソフトウェア構成＞
通常環境１０００のソフトウェアは、汎用オペレーティングシステム（以下、「汎用ＯＳ」という）１００１と、ダウンロード制御アプリ１００７と、アプリＡ１００８と、アプリＢ１００９とを含む。汎用ＯＳ１００１は、カーネル１００２と、不揮発性メモリ管理部１００３と、デバドラＡ１００５と、デバドラＢ１００６とを含む。不揮発性メモリ管理部１００３は、保護データ管理部１００４を含む。
【００３３】
汎用ＯＳ１００１は、カーネル１００２を用いて、アプリをメモリ上にロードして実行する、あるいは、アプリをメモリ上から削除（アンロード）する。また、汎用ＯＳ１００１は、不揮発性メモリ管理部１００３を用いて、機器１１０、１１１に装着されている不揮発性メモリに記憶するデータの管理を行う。特に、アプリＡ１００８またはアプリＢ１００９がアクセスする保護データは、保護データ管理部１００４を用いて管理する。保護データ管理部１００４を用いた、保護データの管理方法については、フローチャートを用いて後ほど説明する。
【００３４】
さらに、汎用ＯＳ１００１は、デバドラＡ１００５またはデバドラＢ１００６を用いて、機器１１０、１１１に装着されている、あるいは、今後装着されるハードウェアへのアクセスを管理する。デバドラＡ１００５またはデバドラＢ１００６は、汎用ＯＳ１００１内または汎用ＯＳ１００１上で動作するアプリからの要求に応じて動作する。
【００３５】
ダウンロード制御アプリ１００７は、機器１１０とインターネットを介して接続されているアプリ配信サーバ１２０と通信し、アプリ配信サーバ１２０からのアプリのダウンロード処理と、機器１１０へのアプリのインストール処理とを行う。
【００３６】
アプリＡ１００８とアプリＢ１００９は、それぞれ、アドレス管理機能、Ｗｅｂブラウズ機能、および電子メール機能などの機能を持ち、ユーザに対してこれらの機能を提供する。
【００３７】
＜保護環境１１００のソフトウェア構成＞
保護環境１１００のソフトウェアは、セキュアオペレーティングシステム（以下、「セキュアＯＳ」という）１１０１と、セキュアブート部１１０２と、メモリ設定部１１０３と、暗復号処理部１１０４とを含む。
【００３８】
セキュアＯＳ１１０１は、保護環境１１００のソフトウェアを管理する。
【００３９】
セキュアブート部１１０２は、機器１１０、１１１の電源投入時にセキュアブートを行う。セキュアブートの処理については、フローチャートを用いて後ほど説明する。
【００４０】
メモリ設定部１１０３は、アプリＡ１００８またはアプリＢ１００９がアクセスする保護データを展開するメモリに対して、各種の設定を行う。
【００４１】
暗復号処理部１１０４は、暗号化されて保存されている保護データの復号処理と、メモリに展開した保護データを暗号化する処理とを行う。暗復号処理については、フローチャートを用いて後ほど説明する。
【００４２】
＜機器１１０、１１１のハードウェア構成＞
図３は、本発明の実施の形態１における機器１１０、１１１のハードウェア構成図である。
【００４３】
図２の各構成要素は、図３の内部保護メモリ１２０５とメモリ１２５０に格納された各構成要素に対応する。これらの各構成要素を実現するためのプログラムが、ＣＰＵ１２０１上で実行されることにより、各機能が実現される。
【００４４】
図３において、機器１１０、１１１は、システムＬＳＩ１２００と、不揮発性記憶装置１２３０と、メモリ１２５０とを含む。システムＬＳＩ１２００は、不揮発性記憶装置１２３０と外部バスを介して接続されている。また、システムＬＳＩ１２００は、メモリ１２５０と専用の外部バスを用いて接続されている。
【００４５】
システムＬＳＩ１２００は、ＣＰＵ１２０１とＩｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ（以下、「ＩＰＬ」という）１２０２と、トラステッドメモリ制御部１２０３と、実行環境切替部１２０４と、内部保護メモリ１２０５と、不揮発性保護メモリ１２０６とを含む。詳細は後述する。
【００４６】
不揮発性記憶装置１２３０は、アプリＡ用の暗号化された保護データ１２３１とアプリＢ用の暗号化された保護データ１２３２を格納する。アプリＡ用の暗号化された保護データ１２３１とは、アプリＡがプログラム実行時にアクセスする保護データを暗号化したものである。アプリＢ用の暗号化された保護データ１２３２も同様である。図４に、暗号化された保護データ１２３１および１２３２の構造を示す。暗号化された保護データ１２３１、１２３２は、暗号化されていないヘッダ情報と、保護データ本体および検証値をまとめて暗号化した情報とを含む構造を有する。検証値は、保護データ本体をハッシュ関数に入力した時に得られるハッシュ値である。
【００４７】
なお、不揮発性記憶装置１２３０は、アプリＡ用の暗号化された保護データ１２３１とアプリＢ用の暗号化された保護データ１２３２のどちらか一方のみを格納するとしてもよい。
【００４８】
なお、暗号化された保護データは、暗号化されていないヘッダ情報を含むとしたが、これに限定されるものではなく、ヘッダ情報を暗号化してもよいし、ヘッダ情報はなくてもよい。ヘッダ情報をなくす場合には、ヘッダ情報に含まれるデータを、別途、不揮発性記憶装置１２３０または不揮発性保護メモリ１２０６へ格納する。
【００４９】
なお、保護データ本体の暗号化には、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）またはＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のような共通鍵暗号方式を利用してもよいし、ＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｌｅｍａｎ）またはＥｌＧａｍａｌなどの公開鍵暗号方式を利用してもよいし、それらを組み合わせてもよい。
【００５０】
なお、保護データ本体と検証値をまとめて暗号化するとしたが、これに限定されるものではない。保護データ本体と検証値は別々に暗号化するとしてもよいし、保護データ本体のみを暗号化するとしてもよい。また、検証値は保護データ本体の後ろの記憶領域に記憶されるのではなく、保護データ本体の前の記憶領域に記憶されるとしてもよいし、検証値はヘッダ情報に含めるとしてもよい。さらに、検証値は、暗号化された保護データに含めるのではなく、暗号化された保護データとは別に、各暗号化された保護データの検証値を集めた検証値リストに格納するとしてもよいし、暗号化された保護データと関連づけた状態で、不揮発性保護メモリに格納するとしてもよい。
【００５１】
なお、ハッシュ関数としては、ＭＤ４、ＭＤ５、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１、またはＳＨＡ−２などのアルゴリズムが利用可能である。また、検証値は、ハッシュ値ではなく、デジタル署名、メッセージ認証コード（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値、誤り検出符号値、または誤り訂正符号値でもよい。ＭＡＣ値を計算するアルゴリズムとしては、ＣＢＣ−ＭＡＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）またはＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）などが利用可能である。誤り検出符号値を計算するアルゴリズムとしては、巡回冗長検査（ＣＲＣ：Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）またはチェックサムなどが利用可能である。誤り訂正符号値を計算するアルゴリズムとしては、リード・ソロモン符号またはターボ符号などが利用可能である。
【００５２】
なお、共通鍵暗号方式に関しては非特許文献２の８ページから１９ページに、公開鍵暗号方式に関しては非特許文献２の４０ページから９５ページに、ハッシュ関数に関しては非特許文献２の９６ページから１０５ページに、デジタル署名方式に関しては非特許文献１の１７１ページから１８８ページに、メッセージ認証コードに関しては非特許文献２の３０ページから３９ページにそれぞれ詳しく説明されている。
【００５３】
暗号化された保護データ１２３１および１２３２は、機器１１０、１１１の工場製造時に不揮発性記憶装置１２３０に格納される。この時、保護データの初期データが生成され、機器ごとに個別の鍵で暗号化することで、暗号化された保護データ１２３１および１２３２が生成される。暗号化に使用した鍵は、システムＬＳＩ１２００内の不揮発性保護メモリ１２０６に格納される。
【００５４】
また、図示しないが、不揮発性記憶装置１２３０は、メモリ１２５０または内部保護メモリ１２０５に格納されるプログラムを格納する。さらに、不揮発性記憶装置１２３０は、アプリＡ１００８およびアプリＢ１００９以外のアプリ、または、アプリＡ１００８およびアプリＢ１００９以外の暗号化された保護データを格納していてもよい。内部保護メモリ１２０５に格納するプログラムは、予め定められた鍵で暗号化された状態で不揮発性記憶装置１２３０に格納される。これらのプログラムは、機器１１０、１１１の工場製造時に不揮発性記憶装置１２３０に格納され、システム起動時またはアプリの起動要求時に、不揮発性記憶装置１２３０から、メモリ１２５０または内部保護メモリ１２０５へ展開される。
【００５５】
なお、内部保護メモリ１２０５に格納するプログラムを暗号化する鍵は、すべての機器で同一の鍵を利用してもよいし、システムＬＳＩ１２００ごとに個別の鍵を用いてもよいし、プログラムごとに個別の鍵を用いてもよい。また、暗号化されたプログラムを復号する鍵は、システムＬＳＩ１２００内部に鍵格納部（図示しない）を持ち、その中に格納されてもよいし、不揮発性保護メモリ１２０６に格納されてもよいし、システムＬＳＩ１２００内部に格納された鍵を用いて暗号化された状態で不揮発性記憶装置１２３０に格納されてもよい。
【００５６】
メモリ１２５０は、通常メモリ領域１２２０とトラステッドメモリ領域１２４０とを含む。
【００５７】
通常メモリ領域１２２０は、汎用ＯＳ１２２１と、ダウンロード制御アプリ１２２２と、アプリＡ１２２３と、アプリＢ１２２４と、ダウンロード制御アプリ用のデータ１２２５と、アプリＡ用のデータ１２２６と、アプリＢ用のデータ１２２７とを格納する。
【００５８】
トラステッドメモリ領域１２４０は、アプリＡ用の保護データ１２４１とアプリＢ用の保護データ１２４２を格納する。トラステッドメモリ領域１２４０は、格納している保護データを利用するアプリのみがアクセス可能なメモリ領域であり、アクセス可能または不可能の制御は、トラステッドメモリ制御部１２０３が行う。
【００５９】
機器１１０、１１１は、さらに、図３に図示されていない入出力部などを備えているが、これらは本発明の本質ではないので説明を省略する。また、システムＬＳＩ１２００は、さらに、図３に図示されていない周辺回路などを備えているが、これらは本発明の本質ではないので説明を省略する。
【００６０】
＜システムＬＳＩ１２００の構成＞
以下、本発明の実施の形態１におけるシステムＬＳＩ１２００の各構成要素の詳細について説明する。
【００６１】
ＣＰＵ１２０１は、メモリ１２５０と内部保護メモリ１２０５とに格納されたプログラム等に含まれる命令コードを実行することにより、機器１１０、１１１全体の動作を制御する。ＣＰＵ１２０１は、動作モードとして特権モードと非特権モードの２つのモードを持ち、汎用ＯＳ（デバドラも含む）１００１は特権モードで動作し、ダウンロード制御アプリ１００７、アプリＡ１００８およびアプリＢ１００９は非特権モードで動作する。ここで特権モードとは、汎用ＯＳが動作可能なモードである。特権モードは、非特権モードで動作するアプリがアクセスすることのできないリソースまたはメモリ領域へのアクセスが可能である。つまり、特権モードで操作するアプリには、非特権モードで動作するアプリがアクセスすることができるリソースまたはメモリ領域に加えて、特権モードで動作するアプリのみがアクセスすることができるリソースまたはメモリ領域が対応付けられている。特権モードは、カーネルモード、マスターモードまたはスーパーバイザモードなどと呼ばれ、非特権モードは、ユーザモードなどと呼ばれる。
【００６２】
ＩＰＬ１２０２は、機器１１０、１１１の電源が投入された時に一番はじめに起動するプログラムであり、内部保護メモリ１２０５に展開されたセキュアＯＳ１２１０およびメモリ１２５０に展開された汎用ＯＳ１２２１を起動する。ＩＰＬ１２０２は、システムＬＳＩ１２００内に設けられたマスクＲＯＭに格納されている。
【００６３】
トラステッドメモリ制御部１２０３は、トラステッドメモリ領域１２４０へのアクセスを制御する。詳細は、構成図を用いて後ほど説明する。
【００６４】
実行環境切替部１２０４は、システムＬＳＩ１２００の通常環境と保護環境を切り替える機能を実現する。実行環境切替部１２０４は、システムＬＳＩ１２００の実行環境が保護環境の時にのみＣＰＵ１２０１等から内部保護メモリ１２０５または不揮発性保護メモリ１２０６へアクセス可能になるようアクセス制御する。また、実行環境切替部１２０４は、システムＬＳＩ１２００の実行環境が通常環境と保護環境のどちらの実行環境であるかを示す状態情報を保持し、トラステッドメモリ制御部１２０３へ実行環境の状態情報を通知する。
【００６５】
内部保護メモリ１２０５は、セキュアＯＳ１２１０と、セキュアブート部１２１１と、メモリ設定部１２１２と、暗復号処理部１２１３とを格納する。
【００６６】
不揮発性保護メモリ１２０６は、鍵Ａ１２１４と鍵Ｂ１２１５を格納する。鍵Ａ１２１４は、アプリＡ用の暗号化された保護データ１２３１の暗復号処理に使用される鍵であり、鍵Ｂ１２１５は、アプリＢ用の暗号化された保護データ１２３２の暗復号処理に使用される鍵である。
【００６７】
なお、不揮発性保護メモリ１２０６は、鍵Ａ１２１４と鍵Ｂ１２１５を格納するとしたが、これに限定されるものではなく、どちらか一方の鍵のみを格納するとしてもよいし、別の鍵またはデータを格納するとしてもよい。また、鍵Ａ１２１４と鍵Ｂ１２１５は、他の鍵Ｍで暗号化され、暗号化された鍵Ａおよび鍵Ｂを不揮発性記憶装置１２３０に格納し、鍵Ｍのみを内部保護メモリ１２０５に格納するとしてもよい。この場合、鍵Ｍで暗号化された鍵Ａと鍵Ｂは、機器１１０、１１１の工場製造時に、暗号化された保護データ１２３１および１２３２と一緒に不揮発性記憶装置１２３０に格納される。さらに、不揮発性保護メモリ１２０６は、内部保護メモリ１２０５に格納されるプログラムを格納してもよい。
【００６８】
＜アプリ配信サーバ１２０の構成＞
図５は、本発明の実施の形態１におけるアプリ配信サーバ１２０の構成図である。
【００６９】
図５において、アプリ配信サーバ１２０は、アプリ保持部２０００と、アプリ受信処理部２００１と、アプリ送信処理部２００２とを含む。
【００７０】
アプリ保持部２０００は、アプリ配信サーバ１２０が管理するアプリを格納する。
【００７１】
アプリ受信処理部２００１は、ネットワークを介して接続された開発装置１３０と通信し、開発装置１３０がアップロードするアプリを受信する。アプリ受信処理部２００１は、受信したアプリをアプリ保持部２０００へ送信し、アプリの保持と管理を依頼する。
【００７２】
アプリ送信処理部２００２は、ネットワークを介して接続された機器１１０と通信し、機器１１０が要求したアプリをアプリ保持部２０００から取得し、送信する。また、アプリ保持部２０００が保持しているアプリのリストを作成し、機器１１０へ送信する。
【００７３】
＜開発装置１３０の構成＞
図６は、本発明の実施の形態１における開発装置１３０の構成図である。
【００７４】
図６において、開発装置１３０は、パッケージ生成部３０００と、設定ファイル生成部３００１と、鍵ペア保持部３００２と、鍵ペア生成部３００３と、デバッグ処理部３００４と、アップロード処理部３００５とを含む。
【００７５】
パッケージ生成部３０００は、開発者が作成したソースコードをコンパイルし、コンパイルしたアプリに、アプリ署名（Ｓｉｇｎａｔｕｒｅ）、設定ファイルまたは公開鍵証明書（Ｃｅｒｔｉｆｉｃａｔｅ）を付加したパッケージファイルを生成する。詳細は後述する。
【００７６】
なお、アプリ署名（デジタル署名）方式に関しては非特許文献１の１７１ページから１８８ページに詳しく説明されている。また、公開鍵証明書に関しては、非特許文献３に詳しく説明されている。
【００７７】
設定ファイル生成部３００１は、アプリに付加する設定ファイルを生成する。設定ファイルには、機器のどのリソースを使用するかの情報、開発者に関する情報、または他のアプリに対してどのようなサービスを提供するかなどの各種情報が記されている。これらの情報は、アプリ開発者が設定する値を元に生成される。
【００７８】
鍵ペア保持部３００２は、パッケージに付加されるアプリ署名を生成および検証するために使用する鍵（公開鍵暗号方式における秘密鍵と公開鍵との鍵対）を保持する。公開鍵は、非特許文献３（ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｘ．５０９）で説明されている公開鍵証明書のフォーマットで保持される。
【００７９】
鍵ペア生成部３００３は、公開鍵暗号方式における秘密鍵と公開鍵との鍵対を生成する。
【００８０】
なお、公開鍵暗号方式に関しては非特許文献１の１０７ページから１３０ページに詳しく説明されている。
【００８１】
デバッグ処理部３００４は、開発装置１３０とＵＳＢ規格等で接続された機器１１１と通信し、開発者が作成したアプリをデバッグするための処理を行う。デバッグするための処理としては、生成したパッケージを用いたアプリのインストール、インストールしたアプリの実行、ブレークポイントの設定、およびログ出力の取得等の処理がある。
【００８２】
アップロード処理部３００５は、開発装置１３０とネットワークを介して接続されたアプリ配信サーバ１２０と通信し、パッケージ生成部３０００で生成したパッケージをアプリ配信サーバ１２０へアップロードする処理を行う。
【００８３】
＜パッケージ生成部３０００の構成＞
図７は、本発明の実施の形態１におけるパッケージ生成部３０００の構成図である。
【００８４】
図７において、パッケージ生成部３０００は、コンパイラ３１００と、リンカ３１０１と、パッケージ生成ツール３１０２とを含む。
【００８５】
コンパイラ３１００は、入力されたプログラムソースコード３１１０をコンパイルし、オブジェクトファイルを生成する。
【００８６】
リンカ３１０１は、コンパイラ３１００が生成したオブジェクトファイルとライブラリをリンクし、機器１１０、１１１が実行可能なファイル（プログラムファイル）を生成する。
【００８７】
パッケージ生成ツール３１０２は、リンカ３１０１が生成したプログラムファイルと、設定ファイル生成部３００１が生成する設定ファイル３１１４と、鍵ペア保持部３００２が保持する秘密鍵３１１２および公開鍵証明書３１１３とからダウンロードパッケージ３１１１を生成する。
【００８８】
＜ダウンロードパッケージ３１１１の構成＞
図８は、本発明の実施の形態１におけるダウンロードパッケージ３１１１の構成図である。
【００８９】
図８において、ダウンロードパッケージ３１１１は、アプリ３２０２と、デバドラ３２０３と、設定ファイル３２０４と、アプリ署名リスト３２０５と、公開鍵証明書３２０６とを含む。
【００９０】
アプリ３２０２とデバドラ３２０３は、開発者が作成したプログラムソースコード３１１０から、コンパイラ３１００とリンカ３１０１を使用して生成したプログラムファイルである。
【００９１】
設定ファイル３２０４は、パッケージ生成ツール３１０２に入力される設定ファイル３１１４と同じである。
【００９２】
アプリ署名リスト３２０５は、アプリ３２０２と、デバドラ３２０３と、設定ファイル３２０４とのそれぞれの署名が並んだリストである。パッケージ生成ツール３１０２は、ダウンロードパッケージ３１１１生成時に、入力されたアプリ３２０２と、デバドラ３２０３と、設定ファイル３２０４とから、それぞれ署名を生成し、アプリ署名リスト３２０５を生成する。署名の生成には、秘密鍵３１１２が使用される。
【００９３】
公開鍵証明書３２０６は、パッケージ生成ツール３１０２に入力される公開鍵証明書３１１３と同じである。
【００９４】
なお、ダウンロードパッケージ３１１１は、アプリ３２０２と、デバドラ３２０３と、設定ファイル３２０４と、アプリ署名リスト３２０５と、公開鍵証明書３２０６とをそれぞれ１つずつを含むとしたが、これに限定されるものではなく、各ファイルは、１つであってもよいし、複数あってもよい。また、含まれないファイルがあってもよい。
【００９５】
＜セキュアブート処理＞
機器１１０、１１１は、汎用ＯＳ１００１または保護環境１１００で動作するソフトウェアが改ざんされていないかを、機器起動時に検証する。
【００９６】
以下、機器１１０、１１１が電源投入され汎用ＯＳ１００１が起動するまでの方法（セキュアブート処理）を、図９のフローチャートを用いて説明する。
【００９７】
機器１１０、１１１に電源が投入されると、システムＬＳＩ１２００内部にあるＩＰＬ１２０２が起動する。
【００９８】
ＩＰＬ１２０２は、まず機器１１０、１１１のハードウェアの初期化処理を行う（Ｓ１０００）。初期化処理では、メモリ１２５０の動作チェック、実行環境切替部１２０４の初期化、または周辺回路（図示しない）の初期化などの処理が行われる。その後、セキュアＯＳ１１０１が起動する。
【００９９】
セキュアＯＳ１１０１は、保護環境の初期化（安全なソフトウェア実行環境の構築）を行い、保護環境でアプリが動作可能な状態にした後、セキュアブート部１１０２をロード（Ｓ１００１）し、セキュアブート部１１０２を起動する。セキュアブート部１１０２は、暗号化された状態で不揮発性記憶装置１２３０に格納されているため、実行環境切替部１２０４がシステムＬＳＩ１２００に固有の鍵を用いて暗号化されたセキュアブート部１１０２を復号し、復号したセキュアブート部１１０２を内部保護メモリ１２０５へロードする。
【０１００】
セキュアブート部１１０２は、セキュアブート部１１０２の検証を行う（Ｓ１００２）。つまり、セキュアブート部１１０２は、プログラムのハッシュ値を生成し、あらかじめ計算しておいた参照ハッシュ値と比較することで、セキュアブート部１１０２が改ざんされていないかを検証する。参照ハッシュ値は、工場出荷前に計算され、セキュアブート部１１０２に埋め込まれる。セキュアブート部１１０２は、参照ハッシュ値を埋め込んだ状態で暗号化され、不揮発性記憶装置１２３０に格納される。
【０１０１】
なお、プログラムの検証にはハッシュ値を利用するとしたが、これに限定されるものではなく、ハッシュ値の代わりに署名を用いる方法でもよい。この時、セキュアブート部１１０２は、署名の検証に用いる公開鍵を埋め込んだ状態で暗号化され、不揮発性記憶装置１２３０に格納されてもよいし、セキュアブート部とは別に不揮発性記憶装置１２３０に格納されるとしてもよい。また、公開鍵を機器外部の別の装置から取得するとしてもよい。
【０１０２】
セキュアブート部１１０２は、ステップＳ１００２でセキュアブート部１１０２を検証した結果、セキュアブート部１１０２が改ざんされていないと判定した場合には、ステップＳ１００３でＯＫと判定し、ステップＳ１００４へ遷移する。ステップＳ１００２でセキュアブート部１１０２を検証した結果、セキュアブート部１１０２が改ざんされていると判定された場合には、ステップＳ１００３でＮＧと判定し、ステップＳ１００６へ遷移する。
【０１０３】
セキュアブート部１１０２は、ステップＳ１００３でＯＫと判定した場合には、汎用ＯＳ１００１の検証を行う（Ｓ１００４）。検証方法は、Ｓ１００２と同様の方法を用いる。
【０１０４】
セキュアブート部１１０２は、ステップＳ１００４で汎用ＯＳ１００１を検証した結果、汎用ＯＳ１００１が改ざんされていないと判定した場合には、ステップＳ１００５でＯＫと判定し、処理を終了し、セキュアＯＳ１１０１へ処理を戻す。ステップＳ１００４で検証した結果、汎用ＯＳ１００１が改ざんされていると判定した場合には、ステップＳ１００５でＮＧと判定し、ステップＳ１００６へ遷移する。
【０１０５】
セキュアブート部１１０２は、Ｓ１００３またはＳ１００５でＮＧと判定した場合には、セキュアブート失敗フラグを設定する（Ｓ１００６）。セキュアブート失敗フラグは、内部保護メモリ１２０５上の特定の領域に保存されるデータ（図示しない）である。セキュアＯＳ１１０１、またはセキュアＯＳ１１０１上で動作するアプリは、セキュアブート失敗フラグをチェックすることで機器１１０、１１１の状態を把握し、動作するか否かを決定する。
【０１０６】
セキュアブート部１１０２は、ステップＳ１００６の処理終了後、セキュアＯＳ１１０１へ処理を戻す。
【０１０７】
セキュアＯＳ１１０１は、セキュアブート部１１０２から処理が戻ると、ＩＰＬ１２０２へ処理を戻す。
【０１０８】
ＩＰＬ１２０２は、不揮発性記憶装置１２３０に格納されている汎用ＯＳ１００１をメモリ１２５０の通常メモリ領域１２２０へロード（Ｓ１００７）し、汎用ＯＳ１００１を実行（起動）する。
【０１０９】
なお、セキュアブート処理は、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（以下、「ＴＣＧ」という）のＭｏｂｉｌｅ  Ｐｈｏｎｅ  ＷＧ（以下、「ＭＰＷＧ」という）で規定するセキュアブートを用いてもよい。
【０１１０】
＜保護データの管理方法＞
機器１１０、１１１は、アプリＡ１００８またはアプリＢ１００９が使用する保護データを暗号化した状態で不揮発性記憶装置１２３０に格納している。
【０１１１】
アプリＡ１００８またはアプリＢ１００９が保護データを使用する時、機器１１０、１１１は、アプリＡ１００８またはアプリＢ１００９からの読み込み依頼を受けて、不揮発性記憶装置１２３０に格納されている暗号化された保護データを読み込み、復号して、メモリ１２５０のトラステッドメモリ領域１２４０へ展開する。
【０１１２】
アプリＡ１００８またはアプリＢ１００９が保護データの使用を終了する時、機器１１０、１１１は、アプリＡ１００８またはアプリＢ１００９からの書き込み依頼を受けて、トラステッドメモリ領域１２４０に展開した保護データを暗号化して、暗号化済みの保護データを不揮発性記憶装置１２３０に格納する。
【０１１３】
以下、保護データの読み込み方法と、保護データの書き込み方法の詳細を、図１０から図１３のフローチャートを用いて説明する。
【０１１４】
＜保護データの読み込み処理＞
以下、本発明の実施の形態１におけるアプリＡ１００８の保護データ読み込み処理を、図１０のフローチャートを用いて説明する。
【０１１５】
アプリＡ１００８は、保護データの読み込みを汎用ＯＳ１００１の不揮発性メモリ管理部１００３へ依頼する（Ｓ１０１０）。この時、アプリＡ１００８は、読み込む保護データのファイル名（フォルダ名も含む）を依頼と一緒に不揮発性メモリ管理部１００３に通知する。
【０１１６】
不揮発性メモリ管理部１００３は、アプリＡ１００８から依頼されたデータが保護データであるかを確認する（Ｓ１０１１）。確認方法としては、ファイル名に含まれるフォルダ名が予め定められた保護データ格納専用のフォルダを示しているかチェックする方法を用いる。不揮発性メモリ管理部１００３は、ステップＳ１０１１で、上記データが保護データであると確認した場合には（Ｓ１０１１でＯＫ）、保護データ管理部１００４に保護データの読み込み依頼（Ｓ１０１２）を行う。この時、不揮発性メモリ管理部１００３は、読み込む保護データのファイル名（フォルダ名も含む）を依頼と一緒に保護データ管理部１００４に通知する。ステップＳ１０１１で、上記データが保護データでないと確認した場合には、ステップＳ１０１６へ遷移する。
【０１１７】
なお、保護データ格納専用のフォルダ名は、システム設計時に決定し、不揮発性メモリ管理部１００３に埋め込んでもよい。また、アプリが決定し、不揮発性メモリ管理部１００３に通知するとしてもよい。さらに、アプリの設定ファイル３２０４に記述され、不揮発性メモリ管理部１００３が確認するとしてもよい。
【０１１８】
保護データ管理部１００４は、不揮発性メモリ管理部１００３からの保護データ読み込み依頼を受けて、暗号化された保護データを不揮発性記憶装置１２３０から読み込み、メモリ１２５０上へ書き込む（Ｓ１０１３）。保護データ管理部１００４は、暗号化された保護データを書き込む領域として、物理アドレスが連続したメモリ領域を確保する。
【０１１９】
保護データ管理部１００４は、読み込んだ暗号化された保護データを復号した結果を書き込む領域をメモリ１２５０上に確保する（Ｓ１０１４）。確保する領域は、物理アドレスが連続したメモリ領域である。
【０１２０】
保護データ管理部１００４は、読み込んだ暗号化された保護データの復号を暗復号処理部１１０４へ依頼する（Ｓ１０１５）。この時、暗号化された保護データを読み込んだメモリ１２５０上の領域情報（先頭物理アドレスとサイズ）、ステップＳ１０１４で確保したメモリ１２５０上の領域情報（先頭物理アドレスとサイズ）を一緒に通知する。
【０１２１】
暗復号処理部１１０４は、保護データ管理部１００４からの復号依頼を受けて、通知されたアドレスにある暗号化された保護データを復号する（Ｓ１０１６）。ステップＳ１０１５の復号処理では、メモリ設定部１１０３とトラステッドメモリ制御部１２０３と連携して、トラステッドメモリの設定も行う。これら復号処理の詳細は後述する。
【０１２２】
復号処理終了後、暗復号処理部１１０４から保護データ管理部１００４、不揮発性メモリ管理部１００３を通して、アプリＡ１００８へ処理が戻る。
【０１２３】
保護データ管理部１００４は、暗復号処理部１１０４から処理が戻った時に通知されるデータ識別子と、不揮発性メモリ管理部１００３から通知されたファイル名と、ステップＳ１０１４で確保したメモリ１２５０上の領域情報（先頭物理アドレスとサイズ）との組をリストで管理する。データ識別子は、メモリ１２５０上に展開されている保護データを識別するための識別子で、メモリ１２５０上に複数の保護データを展開する場合には、それぞれに異なる識別子を割り当てる。
【０１２４】
不揮発性メモリ管理部１００３は、ステップＳ１０１１でアプリＡ１００８が通知したファイルが保護データでないと確認した場合には（Ｓ１０１１でＮＧ）、当該ファイルのデータを通常のデータとして、不揮発性記憶装置１２３０からメモリ１２５０上へ読み込む（Ｓ１０１７）。
【０１２５】
アプリＡ１００８は、読み込まれたデータにアクセスし、データに対して処理を行う。
【０１２６】
＜暗号化された保護データの復号処理（図１０のＳ１０１６）＞
以下、本発明の実施の形態１における暗号化された保護データの復号処理（図１０のＳ１０１６）を、図１１のフローチャートを用いて説明する。
【０１２７】
暗復号処理部１１０４は、トラステッドメモリの設定をメモリ設定部１１０３へ依頼する（Ｓ１０２０）。この時、保護データ管理部１００４から通知された復号用に確保したメモリの領域情報（先頭物理アドレスとサイズ）を一緒に通知する。
【０１２８】
メモリ設定部１１０３は、暗復号処理部１１０４からのトラステッドメモリの設定依頼を受けて、まず、設定値を生成する（Ｓ１０２１）。設定値としては、トラステッドメモリとして設定するメモリの領域情報（先頭物理アドレスとサイズ）、データを使用するアプリＡ１００８の識別子（アプリＩＤ）がある。トラステッドメモリとして使用するメモリ領域は、暗復号処理部１１０４から通知される復号用に確保したメモリの領域情報が示す領域である。また、アプリＡ１００８のアプリＩＤとしては、汎用ＯＳ１００１がアプリの識別に使用しているプロセスＩＤを使用する。プロセスＩＤは、汎用ＯＳ１００１がプロセスＩＤを管理するために使用しているデータ構造（プロセスディスクリプタ等）から取得する。
【０１２９】
メモリ設定部１１０３は、設定値を生成後、トラステッドメモリ制御部１２０３にトラステッドメモリの設定を依頼する（Ｓ１０２２）。この時、ステップＳ１０２１で生成した設定値を通知する。
【０１３０】
トラステッドメモリ制御部１２０３は、メモリ設定部１１０３から通知された設定値を元にトラステッドメモリ領域１２４０を設定する（Ｓ１０２３）。トラステッドメモリ制御部１２０３の詳細な構造と処理フローは、構成図とフローチャートを用いて後ほど説明する。
【０１３１】
設定処理終了後、トラステッドメモリ制御部１２０３からメモリ設定部１１０３、暗復号処理部１１０４へ処理が戻る。
【０１３２】
暗復号処理部１１０４は、不揮発性保護メモリ１２０６に格納されている鍵Ａ１２１４を取得する（Ｓ１０２４）。鍵Ａ１２１４は、暗号化された保護データ１２３１と関連づけられた状態で格納されている。暗復号処理部１１０４は、データのヘッダ情報にあらかじめ暗号データ（暗号化された保護データ１２３１）の識別子を付加し、その識別子と鍵の格納先の対をリストで管理する。
【０１３３】
なお、鍵Ａ１２１４と暗号化された保護データ１２３１との関連づけは、データのヘッダ情報にあらかじめ暗号データの識別子を付加し、その識別子と鍵の格納先の対をリストで管理するとしたが、これに限定されるものではなく、暗号化された保護データのハッシュ値を識別子としてもよいし、アプリＩＤを識別子としてもよい。
【０１３４】
暗復号処理部１１０４は、暗号化された保護データ１２３１を復号する（Ｓ１０２５）。復号したデータは、ステップＳ１０２３で設定したトラステッドメモリに展開する。
【０１３５】
暗復号処理部１１０４は、さらに、復号した保護データの検証を行う（Ｓ１０２６）。検証方法は、まず、復号した保護データ（保護データ本体）のハッシュ値を計算する。その後、計算したハッシュ値と、暗号化された保護データ１２３１に含まれる検証値（復号後の検証値）とを比較し、一致するかどうかで、改ざんされたかどうかを判定する。
【０１３６】
暗復号処理部１１０４は、ステップＳ１０２６で検証した結果、保護データが改ざんされていないと判定された場合には、ステップＳ１０２７でＯＫと判定し、データ識別子の生成を行う（Ｓ１０２８）。暗復号処理部１１０４は、生成したデータ識別子と、復号に使用した鍵と、保護データ管理部１００４から通知された復号用のメモリの領域情報との組をリストで管理する。
【０１３７】
暗復号処理部１１０４は、ステップＳ１０２６で検証した結果、保護データが改ざんされていると判定された場合には、ステップＳ１０２７でＮＧと判定し、トラステッドメモリの設定解除をメモリ設定部１１０３に依頼する（Ｓ１０２９）。暗復号処理部１１０４は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報（先頭物理アドレスとサイズ）をメモリ設定部１１０３に通知する。メモリ設定部１１０３は、トラステッドメモリの設定解除をトラステッドメモリ制御部１２０３へ依頼する。
【０１３８】
トラステッドメモリ制御部１２０３は、通知された領域情報が示す領域のトラステッドメモリの設定を解除する（Ｓ１０３０）。
【０１３９】
設定解除処理終了後、トラステッドメモリ制御部１２０３からメモリ設定部１１０３、暗復号処理部１１０４へ処理が戻る。
【０１４０】
なお、トラステッドメモリの設定後、復号処理をするとしたが、これに限定されるものではなく、復号処理後にトラステッドメモリの設定をするとしてもよい。この時、ステップＳ１０２７で「ＯＫ」と判定した場合には、データ識別子の生成（Ｓ１０２８）に加えて、トラステッドメモリの設定処理が行われる。ステップＳ１０２７で「ＮＧ」と判定した場合には、何も処理は行なわれない。
【０１４１】
＜保護データの書き込み処理＞
以下、本発明の実施の形態１におけるアプリＡ１００８の保護データ書き込み処理を、図１２のフローチャートを用いて説明する。
【０１４２】
アプリＡ１００８は、保護データの書き込みを汎用ＯＳ１００１の不揮発性メモリ管理部１００３へ依頼する（Ｓ１０４０）。この時、書き込む保護データのファイル名（フォルダ名も含む）を依頼と一緒に通知する。
【０１４３】
不揮発性メモリ管理部１００３は、アプリＡ１００８から依頼されたデータが保護データであるか確認する（Ｓ１０４１）。確認方法としては、保護データの読み込み時（Ｓ１０１１）と同様に、ファイル名に含まれるフォルダ名が保護データ格納専用のフォルダを示しているかチェックする方法を用いる。保護データ格納専用のフォルダ名は、工場出荷前に不揮発性メモリ管理部１００３に埋め込まれる。不揮発性メモリ管理部１００３は、ステップＳ１０４１で、保護データであると確認した場合には（Ｓ１０４１でＯＫ）、保護データ管理部１００４に保護データの書き込み依頼（Ｓ１０４２）を行う。この時、不揮発性メモリ管理部１００３は、書き込む保護データのファイル名（フォルダ名を含む）を依頼と一緒に通知する。ステップＳ１０４１で、保護データではないと確認した場合には（Ｓ１０４１でＮＧ）、ステップＳ１０４６へ遷移する。
【０１４４】
保護データ管理部１００４は、不揮発性メモリ管理部１００３からの保護データ書き込み依頼を受けて、まず、暗復号処理部１１０４にトラステッドメモリ上のデータの暗号化を依頼する（Ｓ１０４３）。保護データ管理部１００４は、この時、書き込む保護データのファイル名から、データ識別子を取得し、依頼と一緒に通知する。さらに、保護データ管理部１００４は、暗号化した保護データを格納するメモリ領域を確保し、その情報（先頭物理アドレスとサイズ）も通知する。確保する領域は、物理アドレスが連続したメモリ領域である。
【０１４５】
暗復号処理部１１０４は、保護データ管理部１００４からの暗号化依頼を受けて、保護データ復号時に作成した、データ識別子と領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、トラステッドメモリ上の対応する領域の保護データを暗号化する（Ｓ１０４４）。暗復号処理部１１０４は、暗号化した保護データを、通知された領域へ格納する。ステップＳ１０４４の暗号化処理では、暗復号処理部１１０４は、メモリ設定部１１０３およびトラステッドメモリ制御部１２０３と連携して、トラステッドメモリの設定解除も行う。これら暗号化処理の詳細は後述する。
【０１４６】
暗号化処理終了後、暗復号処理部１１０４から保護データ管理部１００４へ処理が戻る。
【０１４７】
保護データ管理部１００４は、暗号化した保護データをファイルに書き込む（Ｓ１０４５）。書き込み終了後、保護データ管理部１００４は、保護データを展開する領域として確保していた領域を解放する。解放する領域は、データ識別子と関連づけて管理していた領域情報から取得する。その後、保護データ管理部１００４から不揮発性メモリ管理部１００３を通して、アプリＡ１００８へ処理が戻る。
【０１４８】
不揮発性メモリ管理部１００３は、ステップＳ１０４１でアプリＡ１００８が通知したファイルが保護データではないと確認した場合には（Ｓ１０４１でＮＧ）、当該ファイルのデータを通常のデータとして、不揮発性記憶装置１２３０へ書き込む（Ｓ１０４６）。
【０１４９】
＜保護データの暗号化処理（図１２のＳ１０４４）＞
以下、本発明の実施の形態１における保護データの暗号化処理（図１２のＳ１０４４）を、図１３のフローチャートを用いて説明する。
【０１５０】
暗復号処理部１１０４は、保護データ管理部１００４からの暗号化依頼を受けて、保護データ復号時に作成した、データ識別子と、鍵と、領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、まず、領域のハッシュ値を計算し、検証値を生成する（Ｓ１０５０）。生成した検証値は、データの末尾に格納する。
【０１５１】
暗復号処理部１１０４は、不揮発性保護メモリ１２０６に格納している鍵Ａ１２１４を取得する（Ｓ１０５１）。この時、保護データ復号時に作成した、データ識別子と、鍵と、領域情報との組のリストから、通知されたデータ識別子に対応する鍵として、鍵Ａ１２１４を取得する。
【０１５２】
暗復号処理部１１０４は、取得した鍵Ａ１２１４を用いてトラステッドメモリ上の保護データを暗号化する。暗復号処理部１１０４は、この時、保護データの末尾に格納した検証値も一緒に暗号化する。暗復号処理部１１０４は、暗号化した保護データを、保護データ管理部１００４から通知された領域に格納する。
【０１５３】
暗復号処理部１１０４は、暗号化した保護データを格納していた領域のトラステッドメモリの設定解除をメモリ設定部１１０３へ依頼する（Ｓ１０５３）。暗復号処理部１１０４は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報（先頭物理アドレスとサイズ）をメモリ設定部１１０３へ通知する。メモリ設定部１１０３は、トラステッドメモリの設定解除をトラステッドメモリ制御部１２０３へ依頼する。
【０１５４】
トラステッドメモリ制御部１２０３は、通知された領域情報が示す領域のトラステッドメモリの設定を解除する（Ｓ１０５４）。
【０１５５】
設定解除処理終了後、トラステッドメモリ制御部１２０３からメモリ設定部１１０３、暗復号処理部１１０４へ処理が戻る。メモリ設定部１１０３では、設定を解除した領域を、空き領域として管理する。
【０１５６】
＜トラステッドメモリ制御部１２０３の構成＞
図１４は、本発明の実施の形態１におけるトラステッドメモリ制御部１２０３の構成図である。
【０１５７】
図１４において、トラステッドメモリ制御部１２０３は、アクセス判定部１３００と、領域判定部１３０１と、モード判定部１３０２と、プログラム・領域対応判定部１３０３とを含む。
【０１５８】
アクセス判定部１３００は、メモリ１２５０へのアクセスを検出し、トラステッドメモリ領域１２４０へのアクセスであった場合には、アクセスされた領域に設定したアプリからのアクセスであるかを判定し、アクセス許可または不許可の判定を行う。
【０１５９】
領域判定部１３０１は、システムＬＳＩ１２００内部からメモリ１２５０へのアクセスを検出した時に、通常メモリ領域１２２０へのアクセスか、トラステッドメモリ領域１２４０へのアクセスかを判定する。トラステッドメモリ領域１２４０へのアクセスであった場合には、領域判定部１３０１は、さらに、トラステッドメモリ領域１２４０内のどの領域へのアクセスであるかの判定も行う。
【０１６０】
モード判定部１３０２は、メモリ１２５０へアクセスしたプログラムが、非特権モードで動作するプログラム（アプリ）か、特権モードで動作するプログラム（デバドラ、汎用ＯＳ）かを判定する。
【０１６１】
プログラム・領域対応判定部１３０３は、メモリ１２５０へアクセスしたアプリ（プログラム）が、アクセスした領域に設定したアプリかを判定する。アクセスした領域に関する情報は、領域判定部１３０１から取得する。
【０１６２】
以下に、アクセス判定部１３００と領域判定部１３０１、モード判定部１３０２、プログラム・領域対応判定部１３０３の各部の詳細を構成図を用いて説明する。
【０１６３】
＜アクセス判定部１３００の構成＞
図１５は、本発明の実施の形態１におけるアクセス判定部１３００の構成図である。
【０１６４】
図１５において、アクセス判定部１３００は、アクセス制御部１３１０と、有効フラグ保持部１３１１と、判定部１３１２と、設定部１３１３とを含む。
【０１６５】
アクセス制御部１３１０は、システムＬＳＩ１２００とメモリ１２５０を接続する外部専用バスとシステムＬＳＩ１２００の内部バスとに接続され、内部バスと外部専用バス間の中継を行う。内部バス側からメモリ１２５０へアクセスがあった場合には、アクセス制御部１３１０は、判定部１３１２の判定結果に応じてアクセス許可または不許可のアクセス制御を行う。アクセス制御部１３１０は、このアクセス制御を、有効フラグ保持部１３１１に保持されている有効フラグが、「有効」を示している時のみ行う。アクセス制御部１３１０は、有効フラグが「無効」を示している場合には、アクセス制御を行わず、すべてのアクセスを許可する。
【０１６６】
有効フラグ保持部１３１１は、アクセス制御部１３１０のアクセス制御を行う（有効）か行わない（無効）かを示す有効フラグを保持する。
【０１６７】
判定部１３１２は、内部バス側からメモリ１２５０へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、領域判定部１３０１、モード判定部１３０２およびプログラム・領域対応判定部１３０３の判定結果を参照する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
【０１６８】
設定部１３１３は、有効フラグ保持部１３１１が保持する有効フラグの状態を変更する。状態の変更は、保護環境１１００で動作するプログラム（メモリ設定部１１０３）が行う。設定部１３１３は、有効フラグ保持部１３１１が保持する有効フラグの状態を通知された状態に変更する。設定部１３１３は、実行環境切替部１２０４が通知する実行環境識別信号が保護環境を示す時のみ、有効フラグの状態を変更する。
【０１６９】
なお、アクセス判定部１３００は、アクセス制御部１３１０と判定部１３１２のみを含んで構成され、有効フラグ保持部１３１１と設定部１３１３を含まないとしてもよい。この時、アクセス制御部１３１０は、内部バス側からメモリ１２５０へアクセスがあった場合には、直ちに判定部１３１２に判定を依頼し、その判定結果に応じてアクセス許可または不許可のアクセス制御を行う。
【０１７０】
＜領域判定部１３０１の構成＞
図１６は、本発明の実施の形態１における領域判定部１３０１の構成図である。
【０１７１】
図１６において、領域判定部１３０１は、判定部１３２０と、アドレス取得部１３２１と、アドレス保持部１３２２と、設定部１３２３と、領域番号通知部１３２４とを含む。
【０１７２】
判定部１３２０は、内部バス側からメモリ１２５０へアクセスがあった時に、そのアクセス先の物理アドレスがトラステッドメモリとして設定されている領域かどうかを判定する。アクセス先の物理アドレスは、アドレス取得部１３２１から取得し、トラステッドメモリとして設定されている領域（物理アドレス）は、アドレス保持部１３２２から取得する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
【０１７３】
アドレス取得部１３２１は、内部バス側からメモリ１２５０へアクセスがあった時のアクセス情報から、アクセス先の物理アドレスを取得する。アクセス情報は、アクセス先物理アドレスと、属性（読み込み、書き込み、実行）と、動作モード（特権モード、非特権モード）とを含む。
【０１７４】
なお、アクセス情報には、更に、どの回路（ＣＰＵまたは周辺回路）からのアクセスであるかを示す情報を含んでもよいし、実行環境が通常環境と保護環境のどちらの実行環境であるかを示す情報を含んでもよい。
【０１７５】
アドレス保持部１３２２は、トラステッドメモリとして設定している領域の物理アドレスを保持する。保持する情報としては、トラステッドメモリとして設定している領域の先頭物理アドレス（開始アドレス）とその領域のサイズ、その領域設定が有効であるかどうかを示すフラグ（有効／無効フラグ）である。アドレス保持部１３２２は、トラステッドメモリを複数設定している場合には、アドレスリストとして先頭物理アドレスとサイズの組を管理する。また、アドレス保持部１３２２は、領域を識別するための領域番号も一緒に管理する。アドレスリストの構造は、図１７Ａに示すように、有効／無効フラグと、領域番号と、先頭物理アドレス（開始アドレス）と、サイズとを１つの組としたリストである。
【０１７６】
設定部１３２３は、アドレス保持部１３２２が保持する領域情報（先頭物理アドレスとサイズと、有効／無効フラグ）の設定を変更する。領域情報の変更は、保護環境１１００で動作するプログラム（メモリ設定部１１０３）のみが行う。設定部１３２３は、アドレス保持部１３２２が保持する領域情報を通知された領域情報に変更する。設定部１３２３は、実行環境切替部１２０４が通知する実行環境識別信号が保護環境を示す時のみ、領域情報を変更する。
【０１７７】
領域番号通知部１３２４は、判定部１３２０によりトラステッドメモリと判定された領域番号を、他の判定部へ通知する。
【０１７８】
なお、トラステッドメモリとして、１つの領域のみ設定可能な場合には、領域番号通知部１３２４はなくてもよい。他の判定部においては、領域が１つしかないため、アクセス先物理アドレスがトラステッドメモリであった場合には、その領域を特定可能である。
【０１７９】
なお、アドレス保持部１３２２で保持するアドレスリストの構造は、図１７Ｂに示すように、有効／無効フラグと、領域番号と、開始アドレスと、終了アドレスとからなる形式であってもよい。
【０１８０】
＜モード判定部１３０２の構成＞
図１８は、本発明の実施の形態１におけるモード判定部１３０２の構成図である。
【０１８１】
図１８において、モード判定部１３０２は、判定部１３３０と、ＣＰＵモード取得部１３３１とを含む。
【０１８２】
判定部１３３０は、メモリ１２５０へのアクセス時にＣＰＵの動作モードが、非特権モードであるかどうかを判定し、非特権モードの場合はＯＫを、特権モードの場合ＮＧを返す。ＣＰＵの動作モードは、ＣＰＵモード取得部１３３１から取得する。
【０１８３】
ＣＰＵモード取得部１３３１は、メモリ１２５０へのアクセス時に、アクセス命令を発行したプログラムがＣＰＵの特権モードと非特権モードのどちらのモードで動作していたかを、アクセス情報から取得する。
【０１８４】
＜プログラム・領域対応判定部１３０３の構成＞
図１９は、本発明の実施の形態１におけるプログラム・領域対応判定部１３０３の構成図である。
【０１８５】
図１９において、プログラム・領域対応判定部１３０３は、判定部１３４０と、アプリＩＤ取得部１３４１と、領域番号取得部１３４２と、アプリＩＤ・領域対応保持部１３４３と、設定部１３４４とを含む。
【０１８６】
判定部１３４０は、アプリＩＤ取得部１３４１と領域番号取得部１３４２から、アプリを識別するアプリＩＤと領域判定部１３０１から通知される領域番号をそれぞれ取得する。そして、判定部１３４０は、アプリＩＤ・領域対応保持部１３４３に格納しているアプリＩＤ・領域対応リストから、取得した領域番号で示されるメモリ領域に、取得したアプリＩＤを持つプログラムがアクセス可能か判定する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
【０１８７】
アプリＩＤ取得部１３４１は、メモリ１２５０へのアクセス時に、アクセス命令を発行したプログラムの識別子（アプリＩＤ）を取得する。アプリＩＤとしては、汎用ＯＳ１００１がアプリの識別に使用しているプロセスＩＤが使用される。プロセスＩＤは、汎用ＯＳ１００１がプロセスＩＤを管理するために使用しているデータ構造（プロセスディスクリプタ等）から取得する。
【０１８８】
領域番号取得部１３４２は、領域判定部１３０１の領域番号通知部１３２４からの通知を受け、判定部１３４０へ領域番号を通知する。
【０１８９】
アプリＩＤ・領域対応保持部１３４３は、領域番号とその領域にアクセス許可するアプリＩＤの組のリストをアプリＩＤ・領域対応リストとして保持する。アプリＩＤ・領域対応リストの構造は、図２０Ａに示すように、領域番号とアプリＩＤを１つの組としたリスト構造である。
【０１９０】
設定部１３４４は、アプリＩＤ・領域対応保持部１３４３が保持する領域番号とアプリＩＤの対応関係を変更する。この変更は、保護環境１１００で動作するプログラム（メモリ設定部１１０３）が行う。設定部１３４４は、アプリＩＤ・領域対応保持部１３４３が保持する領域番号とアプリＩＤの対応関係を、通知された領域番号とアプリＩＤの対応関係に変更する。設定部１３４４は、実行環境切替部１２０４が通知する実行環境識別信号が保護環境を示す時のみ、領域番号とアプリＩＤの対応関係を変更する。
【０１９１】
なお、トラステッドメモリとして、１つの領域のみ設定可能な場合には、領域番号取得部１３４２を含まない構成でもよい。この場合、アプリＩＤ・領域対応リストとしては、アプリＩＤのみのリスト、あるいは、アプリＩＤを１つだけ含むリストとなる。
【０１９２】
なお、アプリＩＤ・領域対応リストの構造は、領域番号とアプリＩＤを１つの組としたリストであるとしたが、これに限定されるものではなく、アドレスリスト１４００と同様に、有効／無効フラグと領域番号とアプリＩＤとを１つの組として管理してもよい。また、アプリＩＤ・領域対応リストの構造は、１つの領域番号に複数のアプリＩＤが登録できる構造でもよい。複数のアプリＩＤが登録できる構造としては、例えば図２０Ｂに示すような構造である。例えば、領域番号「１」で指定されるトラステッドメモリの領域は、アプリＩＤが「１００１」のアプリと「１１０４」のアプリとで共有されることが示されている。
【０１９３】
＜アクセス判定部１３００のアクセス判定処理＞
以下、本発明の実施の形態１におけるアクセス判定部１３００のアクセス判定処理を、図２１のフローチャートを用いて説明する。
【０１９４】
アクセス制御部１３１０は、有効フラグ保持部１３１１に格納されている有効フラグを取得する（Ｓ１１００）。
【０１９５】
アクセス制御部１３１０は、有効フラグが「有効」を示しているか確認する（Ｓ１１０１）。
【０１９６】
アクセス制御部１３１０は、ステップＳ１１０１で、「有効」であると確認した場合には、判定部１３１２へ、アクセス判定を依頼する（Ｓ１１０２）。
【０１９７】
判定部１３１２は、領域判定部１３０１にトラステッドメモリへのアクセスかどうかの判定を依頼する（Ｓ１１０３）。領域判定部１３０１の判定処理の詳細は、後述する。
【０１９８】
判定部１３１２は、ステップＳ１１０３の判定結果が、「トラステッドメモリへのアクセスである」である場合には、ステップＳ１１０４でＹＥＳと判定し、プログラム・領域対応判定部１３０３から判定結果を取得する（Ｓ１１０５）。プログラム・領域対応判定部１３０３の判定処理の詳細は、後述する。判定部１３１２は、ステップＳ１１０３で「トラステッドメモリへのアクセスではない」と判定した場合には、ステップＳ１１０４でＮＯと判定し、判定部１３１２の判定結果を「許可」とする（Ｓ１１０８）。
【０１９９】
判定部１３１２は、さらに、モード判定部１３０２から判定結果を取得する（Ｓ１１０６）。判定処理の詳細は、モード判定部１３０２の構成で説明した通りである。
【０２００】
判定部１３１２は、プログラム・領域対応判定部１３０３とモード判定部１３０２から取得した判定結果が、どちらもＯＫであるか確認する（Ｓ１１０７）。
【０２０１】
判定部１３１２は、ステップＳ１１０７で、どちらもＯＫであると確認した場合には、判定結果を「許可」とする（Ｓ１１０８）。ステップＳ１１０７で、少なくともどちらか一方がＮＧであると確認した場合には、判定結果を「不許可」とする（Ｓ１１０９）。
【０２０２】
判定部１３１２は、判定結果をアクセス制御部１３１０へ通知する（Ｓ１１１０）。
【０２０３】
アクセス制御部１３１０は、ステップＳ１１０１で、「無効」であると判断した場合には、判定結果を「許可」とする（Ｓ１１１１）。
【０２０４】
アクセス制御部１３１０は、判定結果に応じてアクセス制御処理を行う（Ｓ１１１２）。判定結果が「許可」であった場合には、アクセス制御部１３１０は、メモリ１２５０へのアクセス処理を継続して行う。判定結果が「不許可」であった場合には、アクセス制御部１３１０は、メモリ１２５０へのアクセス処理を中止し、エラーを返す。
【０２０５】
なお、アクセス制御部１３１０は、判定結果が「不許可」であった場合にはエラーを返すとしたが、これに限定されるものではなく、アクセス結果として特定の値（例えば、０ｘ００００または０ｘＦＦＦＦ）を返すとしてもよい。
【０２０６】
＜領域判定部１３０１の判定処理（図２１のＳ１１０３）＞
以下、本発明の実施の形態１における領域判定部１３０１の判定処理（図２１のＳ１１０３）を、図２２のフローチャートを用いて説明する。
【０２０７】
判定部１３２０は、アドレス取得部１３２１から、アクセス先の物理アドレスを取得する（Ｓ１１２０）。
【０２０８】
次に、判定部１３２０は、アドレス保持部１３２２からトラステッドメモリとして設定している領域の物理アドレスを取得する。取得する情報は、領域番号と、先頭物理アドレスと、サイズとである。
【０２０９】
判定部１３２０は、取得したアクセス先物理アドレスがトラステッドメモリとして設定している領域に含まれるかを判定する（Ｓ１１２２）。つまり、判定部１３２０は、アドレスリストから１組の先頭物理アドレスとサイズの組を取得し、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認する。判定部１３２０は、条件を満たす場合、アクセス先物理アドレスがトラステッドメモリに含まれると判定し、その領域番号を記憶する。判定部１３２０は、この処理を、アドレス保持部１３２２に保持されているアドレスリスト内のすべての有効になっている領域に対して行う。アクセス先物理アドレスが、リスト内のどの領域にも含まれない場合には、判定部１３２０は、アクセス先物理アドレスがトラステッドメモリに含まれないと判定する。
【０２１０】
判定部１３２０は、ステップＳ１１２２で、アクセス先物理アドレスがトラステッドメモリに含まれると判定した場合には、ステップＳ１１２３でＹＥＳと判定し、アクセス先物理アドレスが含まれる領域番号を、領域番号通知部１３２４を通して、プログラム・領域対応判定部１３０３などに通知する（Ｓ１１２４）。
【０２１１】
最終的に、判定部１３２０は、メモリ１２５０へのアクセスがトラステッドメモリへのアクセスであると判定する（Ｓ１１２５）。
【０２１２】
判定部１３２０は、ステップＳ１１２２で、アクセス先物理アドレスがトラステッドメモリに含まれないと判定した場合には、ステップＳ１１２３でＮＯと判定し、メモリ１２５０へのアクセスがトラステッドメモリへのアクセスではないと判定する（Ｓ１１２６）。
【０２１３】
＜プログラム・領域対応判定部１３０３の判定処理（図２１のＳ１１０５）＞
以下、プログラム・領域対応判定部１３０３の判定処理（図２１のＳ１１０５）を、図２３のフローチャートを用いて説明する。
【０２１４】
判定部１３４０は、アプリＩＤ取得部１３４１からアプリＩＤを取得する（Ｓ１１３０）。
【０２１５】
判定部１３４０は、領域番号取得部１３４２から領域判定部１３０１が通知する領域番号を取得する（Ｓ１１３１）。
【０２１６】
判定部１３４０は、アプリＩＤ・領域対応保持部１３４３からアプリＩＤ・領域対応リストを取得する（Ｓ１１３２）。取得する情報は、領域番号とその領域にアクセス許可するアプリＩＤを１つの組としたリストである。
【０２１７】
判定部１３４０は、ステップＳ１１３０で取得したアプリＩＤとステップＳ１１３１で取得した領域番号が、ステップＳ１１３２で取得したアプリＩＤ・領域対応リストに含まれる組み合わせであるかを判定する（Ｓ１１３３）。つまり、判定部１３４０は、ステップＳ１１３１で取得した領域番号がアプリＩＤ・領域対応リストに含まれるか調べる。ステップＳ１１３１で取得した領域番号が含まれる場合には、判定部１３４０は、その領域番号と組になっているアプリＩＤをアプリＩＤ・領域対応リストから抽出する。判定部１３４０は、抽出したアプリＩＤが、ステップＳ１１３０で取得したアプリＩＤと一致するか確認する。アプリＩＤが一致した場合には、判定部１３４０は、取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれると判定する。アプリＩＤ・領域対応リストに領域番号が含まれない場合、またはアプリＩＤが一致しない場合には、判定部１３４０は、取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれないと判定する。ステップＳ１１３１で取得した領域番号が複数ある場合には、判定部１３４０は、それぞれの領域番号に対して、上記の処理を適用する。取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれると判定した領域が１つもない場合には、判定部１３４０は、取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれないと判定する。それ以外の場合は、判定部１３４０は、取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれると判定する。
【０２１８】
判定部１３４０は、ステップＳ１１３３で、取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれると判定した場合には、ステップＳ１１３４でＯＫと判定し、領域に対応づけたアプリからのアクセスであると判定する（Ｓ１１３５）。
【０２１９】
判定部１３４０は、ステップＳ１１３３で、取得したアプリＩＤと領域番号がアプリＩＤ・領域対応リストに含まれないと判定した場合には、ステップＳ１１３４でＮＧと判定し、領域に対応づけられていないアプリからのアクセスと判定する（Ｓ１１３６）。
【０２２０】
＜メモリ設定部１１０３の設定値の生成処理（図１１のＳ１０２１）＞
以下、本発明の実施の形態１におけるメモリ設定部１１０３の設定値の生成処理（図１１のＳ１０２１）を、図２４のフローチャートを用いて説明する。
【０２２１】
メモリ設定部１１０３は、トラステッドメモリ領域１２４０を使用する前に、有効フラグ保持部１３１１が保持する有効フラグを確認する（Ｓ１１４０）。
【０２２２】
メモリ設定部１１０３は、ステップＳ１１４０で、有効フラグが「無効」になっていると確認した場合には、アクセス判定部１３００の設定部１３１３に依頼して、有効フラグ保持部１３１１が保持する有効フラグを「有効」に設定する（Ｓ１１４１）。
【０２２３】
メモリ設定部１１０３は、ステップＳ１１４０で、「有効」になっていると確認した場合、または、ステップＳ１１４１の処理を実行後、ステップＳ１１４２へ遷移する。
【０２２４】
メモリ設定部１１０３は、自身が管理する領域番号から、トラステッドメモリの領域番号として、トラステッドメモリ制御部１２０３に設定していない未使用の領域番号を取得する（Ｓ１１４２）。領域番号の数は、システム設定時に決定される。領域番号は、「使用」または「未使用」を示すフラグと、その領域番号に設定する領域情報（先頭物理アドレスとサイズ）と一緒に領域番号管理テーブルとして管理される。
【０２２５】
メモリ設定部１１０３は、ステップＳ１１４２で取得した領域番号と、トラステッドメモリ設定依頼時に暗復号処理部１１０４から通知される復号用に確保したメモリの領域情報（先頭物理アドレスとサイズ）とを１つの組として、領域判定部１３０１への設定値を生成する（Ｓ１１４３）。
【０２２６】
メモリ設定部１１０３は、ステップＳ１１４２で取得した領域番号と、汎用ＯＳ１００１から取得したアプリＩＤとを１つの組として、プログラム・領域対応判定部１３０３への設定値を生成する（Ｓ１１４４）。
【０２２７】
なお、メモリ設定部１１０３は、ステップＳ１１４３で、領域判定部１３０１への設定値を生成する時に、暗復号処理部１１０４から通知される領域情報が示す領域が、その時点で有効になっている領域と重なるかチェックしてもよい。メモリ設定部１１０３は、重なる場合は、エラーを返してもよいし、重ならない領域のみトラステッドメモリの設定をするために設定値を生成してもよい。
【０２２８】
なお、メモリ設定部１１０３は、ステップＳ１１４４で、プログラム・領域対応判定部１３０３への設定値を生成する時に、トラステッドメモリに設定する領域が他の領域と重なる場合は、アプリＩＤが異なるかチェックしてもよい。メモリ設定部１１０３は、アプリＩＤが異なる場合は、エラーを返してもよいし、重ならない領域のみそのアプリＩＤを含む設定値を生成してもよい。メモリ設定部１１０３は、アプリＩＤが同じ場合は、重なる状態のまま設定値を生成してもよい。
【０２２９】
＜メモリ設定部１１０３の設定解除依頼処理＞
以下、本発明の実施の形態１におけるメモリ設定部１１０３の設定解除依頼処理を、図２５のフローチャートを用いて説明する。
【０２３０】
メモリ設定部１１０３は、暗復号処理部１１０４から通知された設定を解除する領域の領域情報から、領域番号を取得する（Ｓ１１５０）。
【０２３１】
メモリ設定部１１０３は、ステップＳ１１５０で取得した領域番号の有効／無効フラグを無効に設定するように、トラステッドメモリ制御部１２０３へ依頼する（Ｓ１１５１）。
【０２３２】
メモリ設定部１１０３は、領域番号管理テーブルを参照し、すべての領域の設定が解除され、未使用の状態になっているか確認する（Ｓ１１５２）。
【０２３３】
メモリ設定部１１０３は、ステップＳ１１５２で、すべての領域の設定が解除されていると判定した場合、「ＹＥＳ」と判定し、有効フラグ保持部１３１１が保持する有効フラグを「無効」に設定する（Ｓ１１５３）。
【０２３４】
メモリ設定部１１０３は、ステップＳ１１５２で、すべての領域の設定が解除されていないと判定した場合、「ＮＯ」と判定し、処理を終了する。
【０２３５】
なお、ステップＳ１１５１で、領域を無効に設定するようトラステッドメモリ制御部１２０３へ依頼するとしたが、その処理（Ｓ１１５１）後、メモリ設定部１１０３は、トラステッドメモリとして設定されていた領域を、異なる値（例えば、全ビット“０”、全ビット“１”、乱数、または所定のビットパターンなど）で上書きする処理を行ってもよい。また、上記処理は、メモリ設定部１１０３が行うのではなく、トラステッドメモリ制御部１２０３が行ってもよい。トラステッドメモリ制御部１２０３が行う場合は、ステップＳ１１５１の後で行ってもよいし、ステップＳ１１５１の依頼を受けた時に行ってもよい。ステップＳ１１５１の依頼を受けた時に行う場合は、トラステッドメモリ制御部１２０３は、設定を「無効」に変更する前に処理してもよいし、変更した後に処理してもよい。
【０２３６】
以上説明したように、本発明の実施の形態１によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
【０２３７】
このように、本発明の実施の形態１によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
【０２３８】
（実施の形態２）
本発明の実施の形態２は、本発明の実施の形態１のトラステッドメモリ制御部１２０３に対して、トラステッドメモリ領域１２４０へのアクセス判定を、領域判定部１３０１とモード判定部１３０２と、プログラム・領域対応判定部１３０３との３つの判定部で判定するのではなく、モード判定部１３０２とプログラム・領域判定部１３０４の２つの判定部で判定する構成とする。
【０２３９】
以下、本発明の実施の形態２におけるトラステッドメモリ制御部１２０３の構成および判定処理を説明する。なお、本発明の実施の形態１と同じ構成要素については同じ符号を用い、説明を省略する。
【０２４０】
＜トラステッドメモリ制御部１２０３の構成＞
図２６は、本発明の実施の形態２のトラステッドメモリ制御部１２０３の構成図である。
【０２４１】
図２６において、トラステッドメモリ制御部１２０３は、アクセス判定部１３００と、モード判定部１３０２と、プログラム・領域判定部１３０４とを含む。
【０２４２】
プログラム・領域判定部１３０４は、アクセス判定部１３００がシステムＬＳＩ１２００内部からメモリ１２５０へのアクセスを検出した時に、当該アクセスが、通常メモリ領域１２２０へのアクセスか、トラステッドメモリ領域１２４０へのアクセスかを判定し、トラステッドメモリ領域１２４０へアクセスしたアプリ（プログラム）が、アクセスした領域に設定されたアプリかを判定する。
【０２４３】
以下に、本発明の実施の形態２におけるアクセス判定部１３００とプログラム・領域判定部１３０４の各部の詳細を構成図を用いて説明する。
【０２４４】
＜アクセス判定部１３００の構成＞
アクセス判定部１３００は、本発明の実施の形態１と同じ構成となり、アクセス制御部１３１０と、有効フラグ保持部１３１１と、判定部１３１２と、設定部１３１３とを含む。
【０２４５】
以下、本発明の実施の形態１と動作が異なる判定部１３１２に関してのみ説明する。
【０２４６】
判定部１３１２は、内部バス側からメモリ１２５０へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、モード判定部１３０２およびプログラム・領域判定部１３０４の判定結果を参照する。判定処理の詳細は、後述する。
【０２４７】
＜プログラム・領域判定部１３０４の構成＞
図２７は、本発明の実施の形態２のプログラム・領域判定部１３０４の構成図である。
【０２４８】
図２７において、プログラム・領域判定部１３０４は、判定部１３５０と、アプリＩＤ取得部１３５１と、アドレス取得部１３５２と、アプリＩＤ・アドレス保持部１３５３と、設定部１３５４とを含む。
【０２４９】
判定部１３５０は、アプリＩＤ取得部１３５１とアドレス取得部１３５２から、アプリを識別するアプリＩＤ（プロセスＩＤ）とアクセス先の物理アドレスとをそれぞれ取得する。そして、判定部１３５０は、アプリＩＤ・アドレス保持部１３５３に格納しているアプリＩＤ・アドレス対応リストに基づいて、取得した物理アドレスで示されるメモリ領域に、取得したアプリＩＤを持つプログラムがアクセス可能か判定する。判定処理の詳細は、フローチャートを用いて後ほど説明する。
【０２５０】
アプリＩＤ取得部１３５１は、本発明の実施の形態１における、アプリＩＤ取得部１３４１（図１９）と同様の機能を持ち、メモリ１２５０へのアクセス時に、アクセス命令を発行したプログラムの識別子（アプリＩＤ）を取得する。
【０２５１】
アドレス取得部１３５２は、本発明の実施の形態１における、アドレス取得部１３２１（図１６）と同様の機能を持ち、内部バス側からメモリ１２５０へアクセスがあった時のアクセス情報から、アクセス先の物理アドレスを取得する。
【０２５２】
アプリＩＤ・アドレス保持部１３５３は、領域情報（開始アドレスとサイズ）とその領域にアクセス許可するアプリＩＤとの組のリストをアプリＩＤ・アドレス対応リストとして保持する。アプリＩＤ・アドレス対応リストの構造は、図２８Ａに示すように、領域番号と、有効／無効フラグと、先頭物理アドレス（開始アドレス）と、サイズと、アプリＩＤとを１つの組とするリストである。
【０２５３】
なお、アプリＩＤ・アドレス保持部１３５３で保持するアプリＩＤ・アドレス対応リストの構造は、図２８Ｂに示すように、領域番号と、有効／無効フラグと、開始アドレスと、終了アドレスと、アプリＩＤとからなる形式であってもよい。
【０２５４】
設定部１３５４は、アプリＩＤ・アドレス保持部１３５３が保持する有効／無効フラグと、領域情報（開始アドレスとサイズ）と、アプリＩＤの値とを変更する。この変更は、保護環境１１００で動作するプログラム（メモリ設定部１１０３）が行う。設定部１３５４は、アプリＩＤ・アドレス保持部１３５３が保持する有効／無効フラグと、領域情報（開始アドレスとサイズ）と、アプリＩＤの値とを、通知された値に変更する。設定部１３５４は、実行環境切替部１２０４が通知する実行環境識別信号が保護環境を示す時のみ、有効／無効フラグと、領域情報（開始アドレスとサイズ）と、アプリＩＤの値とを変更する。
【０２５５】
＜アクセス判定部１３００のアクセス判定処理＞
以下、本発明の実施の形態２におけるアクセス判定部１３００のアクセス判定処理を、図２９のフローチャートを用いて説明する。本発明の実施の形態１と同じ構成要素については同じ符号を付す。
【０２５６】
アクセス制御部１３１０は、有効フラグ保持部１３１１に格納されている有効フラグを取得する（Ｓ１２００）。
【０２５７】
アクセス制御部１３１０は、有効フラグが「有効」を示しているか確認する（Ｓ１２０１）。
【０２５８】
アクセス制御部１３１０は、ステップＳ１２０１で、「有効」であると確認した場合には、判定部１３１２へ、アクセス判定を依頼する（Ｓ１２０２）。
【０２５９】
判定部１３１２は、プログラム・領域判定部１３０４にトラステッドメモリへの許可されたアプリからのアクセスかどうかの判定を依頼する（Ｓ１２０３）。プログラム・領域判定部１３０４の判定処理の詳細は、後述する。
【０２６０】
判定部１３１２は、ステップＳ１２０３の判定結果が、「プログラムがアクセス可能」である場合には、ステップＳ１２０４でＯＫと判定し、モード判定部１３０２から判定結果を取得する（Ｓ１２０５）。判定処理の詳細は、モード判定部１３０２の構成で説明した通りである。
【０２６１】
判定部１３１２は、ステップＳ１２０５でＯＫであると判定した場合には、ステップＳ１２０６でＯＫと判定し、判定部１３１２の判定結果を「許可」とする（Ｓ１２０７）。
【０２６２】
判定部１３１２は、ステップＳ１２０５でＮＧであると判定した場合には、ステップＳ１２０６でＮＧと判定し、判定部１３１２の判定結果を「不許可」とする（Ｓ１２０８）。
【０２６３】
判定部１３１２は、ステップＳ１２０３の判定結果が、「プログラムがアクセス不可能」である場合には、ステップＳ１２０４でＮＧと判定し、判定部１３１２の判定結果を「不許可」とする（Ｓ１２０８）。
【０２６４】
判定部１３１２は、ステップＳ１２０３の判定結果が、「トラステッドメモリの領域外」である場合には、ステップＳ１２０４で領域外と判定し、判定部１３１２の判定結果を「許可」とする（Ｓ１２０７）。
【０２６５】
判定部１３１２は、判定結果をアクセス制御部１３１０へ通知する（Ｓ１２０９）。
【０２６６】
アクセス制御部１３１０は、ステップＳ１２０１で、「無効」であると判断した場合には、判定結果を「許可」とする（Ｓ１２１０）。
【０２６７】
アクセス制御部１３１０は、判定結果に応じてアクセス制御処理を行う（Ｓ１２１１）。判定結果が「許可」であった場合には、トラステッドメモリへのアクセス処理を継続して行う。判定結果が「不許可」であった場合には、トラステッドメモリへのアクセス処理を中止し、エラーを返す。
【０２６８】
＜プログラム・領域判定部１３０４の判定処理（図２９のＳ１２０３）＞
以下、本発明の実施の形態２におけるプログラム・領域判定部１３０４の判定処理（図２９のＳ１２０３）を、図３０のフローチャートを用いて説明する。
【０２６９】
判定部１３５０は、アプリＩＤ取得部１３５１からアプリＩＤを取得する（Ｓ１２３０）。
【０２７０】
判定部１３５０は、アドレス取得部１３５２からアクセス先の物理アドレスを取得する（Ｓ１２３１）。
【０２７１】
判定部１３５０は、アプリＩＤ・アドレス保持部１３５３に保持されているアプリＩＤ・アドレス対応リストから、先頭物理アドレス、サイズ、アプリＩＤの組を１つ取得する（Ｓ１２３２）。この時、アプリＩＤ・アドレス対応リストの有効／無効フラグを確認し、「有効」と記されている項目のみを取得する。
【０２７２】
判定部１３５０は、ステップＳ１２３１で取得したアクセス先物理アドレスがステップＳ１２３２で取得した先頭物理アドレスとサイズで表される領域に含まれるか判定する（Ｓ１２３３）。つまり、判定部１３５０は、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認する。判定部１３５０は、条件を満たす場合、アクセス先物理アドレスがトラステッドメモリに含まれると判定し、条件を満たさない場合、アクセス先の物理アドレスがトラステッドメモリに含まれないと判定する。
【０２７３】
判定部１３５０は、ステップＳ１２３３で、アクセス先物理アドレスがトラステッドメモリに含まれると判定した場合には、ステップＳ１２３４でＹＥＳと判定し、ステップＳ１２３０で取得したアプリＩＤが、ステップＳ１２３２で取得したアプリＩＤと一致するか判定する（Ｓ１２３５）。
【０２７４】
ステップＳ１２３３で、アクセス先物理アドレスがトラステッドメモリに含まれないと判定した場合（Ｓ１２３４でＮＯ）、または、ステップＳ１２３５の処理の後、判定部１３５０は、アプリＩＤ・アドレス保持部１３５３が保持するアプリＩＤ・アドレス対応リストの「有効」と記されている項目に関して、すべての項目に関してステップＳ１２３３の判定が終了したか判定する（Ｓ１２３６）。判定部１３５０は、ステップＳ１２３６で、すべての項目に関して判定が終了したと判定した場合、「ＹＥＳ」と判定し、ステップＳ１２３７へ遷移する。判定部１３５０は、ステップＳ１２３６で、すべての項目に関して判定が終了していないと判定した場合、「ＮＯ」と判定し、ステップＳ１２３２へ遷移する。
【０２７５】
判定部１３５０は、アプリＩＤ・アドレス対応リスト内の１つ以上の項目において、アクセス先物理アドレスが含まれる領域があった場合、ステップＳ１２３７で「ＹＥＳ」と判定し、ステップＳ１２３８へ遷移する。
【０２７６】
判定部１３５０は、ステップＳ１２３５で一致すると判定した項目が１つでもあった場合、ステップＳ１２３８で「ＹＥＳ」と判定し、プログラムがアクセス可能と判定する（Ｓ１２３９）。
【０２７７】
判定部１３５０は、ステップＳ１２３５で一致すると判定した項目が１つもなかった場合、ステップＳ１２３８で「ＮＯ」と判定し、プログラムがアクセス不可能と判定する（Ｓ１２４０）。
【０２７８】
判定部１３５０は、アプリＩＤ・アドレス対応リスト内のすべての項目において、アクセス先物理アドレスが含まれる領域がなかった場合、ステップＳ１２３７で「ＮＯ」と判定し、アクセス先がトラステッドメモリの領域外と判定する（Ｓ１２４１）。
【０２７９】
以上説明したように、本発明の実施の形態２によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
【０２８０】
このように、本発明の実施の形態２によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
【０２８１】
（実施の形態３）
本発明の実施の形態３は、本発明の実施の形態１の機器１１０、１１１のハードウェア構成において、トラステッドメモリの領域を汎用ＯＳ１００１またはアプリＡ１００８等を格納するメモリと同じメモリ１２５０上に設けるのではなく、トラステッドメモリ専用のメモリを利用する構成とする。また、トラステッドメモリ１２７０は、特権モードで動作するプログラム（汎用ＯＳ１００１）からアクセス不可能なメモリとし、複数の領域を設定することができない場合について説明する。
【０２８２】
以下、本発明の実施の形態３における機器１１０、１１１のハードウェア構成および判定処理を説明する。なお、本発明の実施の形態１と同じ構成要素については同じ符号を用い、説明を省略する。
【０２８３】
＜機器１１０、１１１のハードウェア構成＞
図３１は、本発明の実施の形態３における機器１１０、１１１のハードウェア構成図である。図３１において、図３と同じ構成要素については同じ符号を用い、説明を省略する。
【０２８４】
図３１において、機器１１０、１１１は、システムＬＳＩ１２００と、不揮発性記憶装置１２３０と、通常メモリ１２６０と、トラステッドメモリ１２７０とを含む。システムＬＳＩ１２００は、不揮発性記憶装置１２３０、通常メモリ１２６０とそれぞれ外部バスを介して接続されている。また、システムＬＳＩ１２００は、トラステッドメモリ１２７０と専用の外部バスを用いて接続されている。
【０２８５】
システムＬＳＩ１２００は、トラステッドメモリ制御部１２０３の構成、および、動作が異なるのみで、他の構成に関しては本発明の実施の形態１と同じである。トラステッドメモリ制御部１２０３の構成、および、動作に関しては後述する。
【０２８６】
通常メモリ１２６０は、汎用ＯＳ１２２１と、ダウンロード制御アプリ１２２２と、アプリＡ１２２３と、アプリＢ１２２４と、ダウンロード制御アプリ用のデータ１２２５と、アプリＡ用のデータ１２２６と、アプリＢ用のデータ１２２７とを格納する。
【０２８７】
トラステッドメモリ１２７０は、アプリＡ用の保護データ１２４１とアプリＢ用の保護データ１２４２を格納する。トラステッドメモリ１２７０は、アプリのみがアクセス可能なメモリ領域であり、アクセス可能または不可能の制御は、トラステッドメモリ制御部１２０３によって実現される。
【０２８８】
＜保護データの管理方法＞
以下、本発明の実施の形態３の保護データの管理方法を、本発明の実施の形態１における保護データの管理方法の説明図（図１０から図１３）を用いて、説明する。なお、本発明の実施の形態１と同じ処理については説明を省略し、図１０から図１３のうち、本発明の実施の形態１と異なる処理の部分のみを説明する。
【０２８９】
まず、図１０を用いて、本発明の実施の形態３における保護データの読み込み処理に関して説明する。
【０２９０】
ステップＳ１０１０からステップＳ１０１３に関しては、本発明の実施の形態１と同じ処理となるため説明を省略する。
【０２９１】
本発明の実施の形態１では、ステップＳ１０１４において、保護データ管理部１００４が、読み込んだ暗号化された保護データを復号した結果を書き込む領域をメモリ１２５０上に確保するとしていた。しかし、本発明の実施の形態３においては、トラステッドメモリ領域として利用可能なメモリは、トラステッドメモリ１２７０のみである。そのため、ステップＳ１０１４は、メモリ１２５０上に領域を確保するのではなく、トラステッドメモリ１２７０を使用するフラグを設定する処理となる。保護データ管理部１００４は、追加の処理として、トラステッドメモリ１２７０を使用するフラグが既に設定されていた場合には、復号依頼（ステップＳ１０１５）は行わず、不揮発性メモリ管理部１００３へ終了通知を行う。
【０２９２】
また、本発明の実施の形態１では、ステップＳ１０１５において、ステップＳ１０１４で確保したメモリ１２５０上の領域情報（先頭物理アドレスとサイズ）を一緒に通知するとしていた。しかし、本発明の実施の形態３においては、ステップＳ１０１４でメモリ１２５０上に領域を確保しない。このため、保護データ管理部１００４は、ステップＳ１０１４で確保したメモリ１２５０上の領域情報（先頭物理アドレスとサイズ）を暗復号処理部１１０４へ通知しない。
【０２９３】
ステップＳ１１０６以降の処理は、本発明の実施の形態１と同じ処理となるため、説明を省略する。
【０２９４】
次に、図１１を用いて、本発明の実施の形態３における暗号化された保護データの復号処理（Ｓ１０１２）に関して説明する。
【０２９５】
本発明の実施の形態１では、ステップＳ１０２０において、保護データ管理部１００４から通知された復号用に確保したメモリの領域情報（先頭物理アドレスとサイズ）を一緒に通知するとしていた。しかし、本発明の実施の形態３においては、復号用に確保したメモリの領域情報は通知されないため、暗復号処理部１１０４は、メモリ設定部１１０３にはこの領域情報を通知しない。
【０２９６】
本発明の実施の形態１では、ステップＳ１０２１において、設定値を生成するとしていた。しかし、本発明の実施の形態３では、領域情報とアプリＩＤは生成されない。トラステッドメモリ１２７０の領域情報は、設計時に決定されるため、メモリ設定部１１０３は、このステップでは領域情報を生成しない。また、トラステッドメモリ制御部１２０３にはアプリＩＤを設定しないため、メモリ設定部１１０３は、アプリＩＤも生成しない。本ステップは不要となる。
【０２９７】
本発明の実施の形態１では、ステップＳ１０２２において、ステップＳ１０２１で生成した設定値を通知するとしていた。しかし、本発明の実施の形態３においては、ステップＳ１０２１が不要となるため、メモリ設定部１１０３は、設定値を通知しない。
【０２９８】
本発明の実施の形態１では、ステップＳ１０２３において、トラステッドメモリ制御部１２０３は、メモリ設定部１１０３から通知された設定値を元にトラステッドメモリ領域１２４０を設定するとしていた。しかし、本発明の実施の形態３では、トラステッドメモリ制御部１２０３は、設計時に決定される領域情報を元に、トラステッドメモリ１２７０全体をトラステッドメモリ領域として設定する。
【０２９９】
ステップＳ１０２４からステップＳ１０２８までの処理は、本発明の実施の形態１と同じ処理となるため、説明を省略する。
【０３００】
本発明の実施の形態１では、ステップＳ１０２９において、暗復号処理部１１０４は、どの領域の設定を解除するかを示す領域情報（先頭物理アドレスとサイズ）をメモリ設定部１１０３に通知するとしていた。しかし、本発明の実施の形態３においては、暗復号処理部１１０４は、領域情報を通知しない。
【０３０１】
本発明の実施の形態１では、ステップＳ１０３０において、トラステッドメモリ制御部１２０３は、通知された領域情報が示す領域のトラステッドメモリの設定を解除するとしていた。しかし、本発明の実施の形態３においては、トラステッドメモリ１２７０全体がトラステッドメモリ領域のため、領域情報は通知されず、トラステッドメモリ制御部１２０３は、トラステッドメモリ１２７０の設定を解除する。
【０３０２】
次に、図１２を用いて、本発明の実施の形態３における保護データの書き込み方法に関して説明する。
【０３０３】
ステップＳ１０４０からステップＳ１０４３に関しては、本発明の実施の形態１と同じ処理となるため説明を省略する。
【０３０４】
本発明の実施の形態１では、ステップＳ１０４４において、暗復号処理部１１０４は、データ識別子と領域情報との組のリストから、通知されたデータ識別子に対応する領域情報を取得し、トラステッドメモリ上の対応する領域の保護データを暗号化するとしていた。しかし、本発明の実施の形態３においては、暗復号処理部１１０４は、トラステッドメモリ１２７０全体を暗号化する。
【０３０５】
ステップＳ１０４５以降の処理は、本発明の実施の形態１と同じ処理となるため、説明を省略する。
【０３０６】
次に、図１３を用いて、本発明の実施の形態３における保護データの暗号化処理（Ｓ１０４４）に関して説明する。
【０３０７】
ステップＳ１０５０からステップＳ１０５２に関しては、本発明の実施の形態１と同じ処理となるため説明を省略する。
【０３０８】
本発明の実施の形態１では、ステップＳ１０５３において、暗復号処理部１１０４は、設定解除の依頼時に、どの領域の設定を解除するかを示す領域情報（先頭物理アドレスとサイズ）を、メモリ設定部１１０３に通知するとしていた。しかし、本発明の実施の形態３においては、設定を解除する領域は、トラステッドメモリ１２７０全体であるため、暗復号処理部１１０４は、領域情報をメモリ設定部１１０３に通知しない。
【０３０９】
本発明の実施の形態１では、ステップＳ１０５４において、トラステッドメモリ制御部１２０３は、通知された領域情報が示す領域のトラステッドメモリの設定を解除するとしていた。しかし、本発明の実施の形態３においては、領域情報は通知されない。このため、トラステッドメモリ制御部１２０３は、トラステッドメモリの設定解除を、トラステッドメモリ１２７０全体に対して行う。
【０３１０】
以降の処理は、本発明の実施の形態１と同じ処理となるため、説明を省略する。
【０３１１】
＜トラステッドメモリ制御部１２０３の構成＞
図３２は、本発明の実施の形態３におけるトラステッドメモリ制御部１２０３の構成図である。
【０３１２】
図３２において、トラステッドメモリ制御部１２０３は、アクセス判定部１３００と、領域判定部１３０１と、モード判定部１３０２とを含む。
【０３１３】
以下に、本発明の実施の形態３におけるアクセス判定部１３００と領域判定部１３０１の各部の詳細を構成図を用いて説明する。
【０３１４】
＜アクセス判定部１３００の構成＞
図３３は、本発明の実施の形態３におけるアクセス判定部１３００の構成図である。
【０３１５】
図３３において、アクセス判定部１３００は、アクセス制御部１３１０と判定部１３１２とを含む。
【０３１６】
アクセス制御部１３１０は、システムＬＳＩ１２００とメモリ１２５０とを接続する外部専用バスと、システムＬＳＩ１２００の内部バスとに接続され、内部バスと外部専用バス間のデータ中継を行う。内部バス側からメモリ１２５０へアクセスがあった場合には、アクセス制御部１３１０は、判定部１３１２の判定結果に応じてアクセス許可または不許可のアクセス制御を行う。
【０３１７】
判定部１３１２は、内部バス側からメモリ１２５０へアクセスがあった場合に、そのアクセスの許可または不許可を判定する。許可または不許可の判定には、領域判定部１３０１およびモード判定部１３０２の判定結果を参照する。判定処理の詳細は、後述する。
【０３１８】
＜領域判定部１３０１の構成＞
図３４は、本発明の実施の形態３における領域判定部１３０１の構成図である。
【０３１９】
図３４において、領域判定部１３０１は、判定部１３２０と、アドレス取得部１３２１と、アドレス保持部１３２２とを含む。
【０３２０】
以下、本発明の実施の形態１と動作が異なる判定部１３２０とアドレス保持部１３２２に関してのみ説明する。
【０３２１】
判定部１３２０は、内部バス側からメモリ１２５０へアクセスがあった時に、そのアクセス先の物理アドレスがトラステッドメモリとして設定されている領域かどうかを判定する。アクセス先の物理アドレスは、アドレス取得部１３２１から取得し、トラステッドメモリとして設定されている領域（物理アドレス）は、アドレス保持部１３２２から取得する。判定処理の詳細は、後述する。
【０３２２】
アドレス保持部１３２２は、トラステッドメモリとして設定している領域の物理アドレスを保持する。保持する情報としては、トラステッドメモリとして設定している領域の先頭物理アドレス（開始アドレス）とその領域のサイズである。これらの情報は、特権モードから変更できない領域に記憶される。例えば、システムＬＳＩ内のマスクＲＯＭもしくはＰＲＯＭ、システムＬＳＩの内部レジスタ、内部保護メモリ１２０５、または不揮発性保護メモリ１２０６などに記憶される。
【０３２３】
＜アクセス判定部１３００のアクセス判定処理＞
以下、本発明の実施の形態３のアクセス判定部１３００のアクセス判定処理を、本発明の実施の形態１におけるアクセス判定部１３００のアクセス判定処理の説明図（図２１）を用いて、説明する。なお、本発明の実施の形態１と同じ処理については説明を省略し、図２１のうち、本発明の実施の形態１と異なる処理の部分のみを説明する。
【０３２４】
ステップＳ１１００からステップＳ１１０１とステップＳ１１１１とは、有効フラグが存在しないため、処理を行わない。
【０３２５】
ステップＳ１１０２からステップＳ１１０４に関しては、本発明の実施の形態１と同じ処理となるため説明を省略する。
【０３２６】
本発明の実施の形態３ではステップＳ１１０５の処理は実行されない。判定部１３１２は、ステップＳ１１０３の判定結果が、「トラステッドメモリである」である場合には、ステップＳ１１０４でＹＥＳと判定し、モード判定部１３０２から判定結果を取得する（Ｓ１１０６）。ステップＳ１１０６は、本発明の実施の形態１と同じ処理である。
【０３２７】
本発明の実施の形態１では、ステップＳ１１０７において、判定部１３１２は、プログラム・領域対応判定部１３０３とモード判定部１３０２とから取得した判定結果が、どちらもＯＫであるか確認するとしていた。しかし、本発明の実施の形態３では、判定部１３１２は、モード判定部１３０２から取得した判定結果がＯＫであるか確認する。
【０３２８】
ステップＳ１１０８以降（ステップＳ１１１１を除く）の処理は、本発明の実施の形態１と同じ処理となるため、説明を省略する。
【０３２９】
＜領域判定部１３０１の判定処理＞
以下、本発明の実施の形態３の領域判定部１３０１の判定処理を、本発明の実施の形態１における領域判定部１３０１の判定処理の説明図（図２２）を用いて、説明する。なお、本発明の実施の形態１と同じ処理については説明を省略し、図２２のうち、本発明の実施の形態１と異なる処理の部分のみを説明する。
【０３３０】
ステップＳ１１２０からステップＳ１１２１に関しては、本発明の実施の形態１と同じ処理となるため説明を省略する。
【０３３１】
本発明の実施の形態１では、ステップＳ１１２２において、判定部１３２０は、アドレスリストから１組の先頭物理アドレスとサイズの組を取得し、アクセス先物理アドレスが、先頭物理アドレスより大きく、かつ、先頭物理アドレスとサイズを足した値より小さいという条件を満たすか確認するとしていた。また、判定部１３２０は、この処理を、アドレス保持部１３２２に保持されているアドレスリスト内のすべての有効になっている領域に対して行うとしていた。しかし、本発明の実施の形態３においては、アドレス保持部１３２２では、アドレスリストではなく、トラステッドメモリとして設定している領域の先頭物理アドレス（開始アドレス）とその領域のサイズを１組分保持しているのみである、そのため、ステップＳ１１２１とステップＳ１１２２を繰り返す処理は行われない。
【０３３２】
ステップＳ１１２３以降の処理は、本発明の実施の形態１と同じ処理となるため、説明を省略する。
【０３３３】
以上説明したように、本発明の実施の形態３によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみがアクセス可能とした。このため、アプリが使用するデータに、不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
【０３３４】
このように、本発明の実施の形態３によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
【０３３５】
（実施の形態４）
本発明の実施の形態１のアクセス判定部１３００は、モード判定部１３０２の判定結果を用いてアクセス許可または不許可の判定を行うとしたが、本発明の実施の形態４では、アプリとデバドラの間でデータの送受信が必要な場合は、モード判定部１３０２の判定結果を用いずに、アクセス許可または不許可の判定を行う。
【０３３６】
図３５は、アプリとデバドラの間でデータの送受信を可能にするアクセス判定部１３００の構成図である。
【０３３７】
図３５において、アクセス判定部１３００は、アクセス制御部１３１０と、有効フラグ保持部１３１１と、判定部１３１２と、設定部１３１３と、デバドラアクセス許可アプリＩＤリスト保持部１３１４とを含む。
【０３３８】
以下、本発明の実施の形態１と動作が異なる判定部１３１２とデバドラアクセス許可アプリＩＤリスト保持部１３１４に関してのみ説明する。
【０３３９】
判定部１３１２は、内部バス側からメモリ１２５０へアクセスがあった場合に、領域判定部１３０１、モード判定部１３０２およびプログラム・領域対応判定部１３０３の判定結果を参照し、アクセスの許可または不許可を判定する。本発明の実施の形態４においては、アプリから呼び出されたデバドラがメモリ１２５０へアクセスした時には、プログラム・領域対応判定部１３０３のアプリＩＤ取得部１３５１は、デバドラを呼び出したアプリのアプリＩＤを取得する。
【０３４０】
デバドラアクセス許可アプリＩＤリスト保持部１３１４は、特権モードで動作するデバドラによるトラステッドメモリへのアクセスを許可するアプリのアプリＩＤのリスト（デバドラアクセス許可アプリＩＤリスト）を保持する。デバドラアクセス許可アプリＩＤリストの構造は、図３６に示すように、アプリＩＤをリストで管理する。
【０３４１】
＜アクセス判定部１３００のアクセス判定処理＞
以下、本発明の実施の形態４におけるアクセス判定部１３００のアクセス判定処理を、本発明の実施の形態１におけるアクセス判定部１３００のアクセス判定処理の説明図（図２１）と図３７を用いて、説明する。なお、本発明の実施の形態１と同じ処理については説明を省略し、図２１のうち、本発明の実施の形態１と異なるステップＳ１１０７の処理のみを説明する。
【０３４２】
本発明の実施の形態１では、ステップＳ１１０７において、判定部１３１２は、プログラム・領域対応判定部１３０３とモード判定部１３０２から取得した判定結果が、どちらもＯＫであるか確認する。しかし、本発明の実施の形態４では、デバドラアクセス許可アプリＩＤリストに含まれるアプリＩＤを持つアプリからのアクセスがあった場合には、判定部１３１２は、プログラム・領域対応判定部１３０３から取得した判定結果がＯＫであるか確認する。処理の詳細を、図３７を用いて説明する。
【０３４３】
ステップＳ１１０６の処理後、判定部１３１２は、デバドラアクセス許可アプリＩＤリスト保持部１３１４からデバドラアクセス許可アプリＩＤリストを取得する（Ｓ１１１３）。
【０３４４】
判定部１３１２は、プログラム・領域対応判定部１３０３からアプリＩＤを取得する（Ｓ１１１４）。
【０３４５】
判定部１３１２は、ステップＳ１１１４で取得したアプリＩＤが、ステップＳ１１１３で取得したデバドラアクセス許可アプリＩＤリストに含まれるか判定する（Ｓ１１１５）。
【０３４６】
判定部１３１２は、ステップＳ１１１５で、アプリＩＤがデバドラアクセス許可アプリＩＤリストに含まれないと判定した場合には、ステップＳ１１１６で「ＮＯ」と判定し、本発明の実施の形態１と同様にステップＳ１１０７からＳ１１０９の処理を実施する。
【０３４７】
判定部１３１２は、ステップＳ１１１５で、アプリＩＤがデバドラアクセス許可アプリＩＤリストに含まれると判定した場合には、ステップＳ１１１６で「ＹＥＳ」と判定し、プログラム・領域対応判定部１３０３がＯＫと判定したかどうかを確認する（Ｓ１１１７）。
【０３４８】
判定部１３１２は、プログラム・領域対応判定部１３０３がＯＫと判定した場合には、ステップＳ１１１７で、「ＯＫ」と判定し、判定結果を「許可」とし（Ｓ１１０８）、プログラム・領域対応判定部１３０３がＯＫと判定しなかった場合には、ステップＳ１１１７で、「ＮＧ」と判定し、判定結果を「不許可」とする（Ｓ１１０９）。
【０３４９】
以上説明したように、本発明の実施の形態４によれば、デバドラを特権モードで実行させ、アプリを非特権モードで実行させるようにし、トラステッドメモリ領域は、アプリのみならず、アプリが呼び出すデバドラからもアクセス可能とした。このため、アプリが使用するデータに、アプリが呼び出さない不正デバドラが不正にアクセスしたり、不正アプリが保護データに不正にアクセスできるようにするために、不正デバドラがメモリアクセスの許可または不許可を決定する属性表を改ざんしたりすることを防止することができる。
【０３５０】
このように、本発明の実施の形態４によれば、不正アプリまたは不正デバドラによる情報資産の漏えいおよび改ざんが防止されるため、ユーザが安心して機器を利用することができる。
【０３５１】
また、アプリとデバドラとの間でデータの送受信が必要な場合には、例外的に、デバドラからもトラステッドメモリ領域にアクセス可能とした。なお、デバドラは、特権モードで実行されることとなる。
【０３５２】
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０３５３】
（１）上記実施の形態におけるトラステッドメモリ制御部１２０３の各部は、すべてハードウェアで構成されていてもよい。また、アクセス制御部１３１０と各保持部（有効フラグ保持部１３１１、アドレス保持部１３２２、アプリＩＤ・領域対応保持部１３４３、アプリＩＤ・アドレス保持部１３５３）以外は、ソフトウェアで構成されていてもよい。また、アクセス制御部１３１０と各保持部（有効フラグ保持部１３１１、アドレス保持部１３２２、アプリＩＤ・領域対応保持部１３４３、アプリＩＤ・アドレス保持部１３５３）を含むいくつかの構成要素がハードウェアで構成され、それ以外の各部がソフトウェアで構成されていてもよい。
【０３５４】
（２）上記実施の形態における機器１１０、１１１のハードウェア構成は、図３８に示すように、ＣＰＵ１２０１と、トラステッドメモリ制御部１２０３と、通常メモリ１２６０と、トラステッドメモリ１２７０とが最低限あればよい。
【０３５５】
（３）上記実施の形態における各リスト（アドレスリスト１４００、１４０１、アプリＩＤ・領域対応リスト１４０２、アプリＩＤ・アドレス対応リスト１４０４、１４０５）は、トラステッドメモリ制御部１２０３内のメモリまたはレジスタに格納してもよいし、内部保護メモリ１２０５に格納してもよいし、トラステッドメモリ領域１２４０またはトラステッドメモリ１２７０に格納してもよい。また、各リストは構造図で示した表形式で格納されなくてもよい。設計時に、どの領域（レジスタ）にどの情報を格納するかの関係が決められていればよい。
【０３５６】
（４）上記実施の形態におけるアプリＩＤは、プロセスＩＤを使用するとしたが、これに限定されるものではなく、個々のアプリが識別できる情報であればよい。例えば、ＭＭＵに設定されるページテーブルのベースアドレスであってもよいし、特定の仮想アドレスに記されたデータ（識別子）であってもよい。また、アプリＩＤは、保護環境で動作するプログラムが設定する値としてもよい。この時、アプリＩＤ取得部１３４１は、保護環境で動作するプログラムがアプリＩＤを設定した領域からアプリＩＤを取得する。
【０３５７】
（５）上記実施の形態では、領域判定部１３０１でのアドレスリスト１４００にアクセス先物理アドレスが含まれるかを判定する処理（Ｓ１１２２）、または、プログラム・領域判定部１３０４でのアプリＩＤ・アドレス対応リスト１４０４、１４０５にアクセス先物理アドレスが含まれるか、およびそれに対応するアプリＩＤが一致するかを判定する処理（Ｓ１２３３もしくはＳ１２３５）において、これらの処理をリスト内のすべてのデータが判定できるまで繰り返し処理するとしたが、これに限定されるものではない。つまり、ハードウェアまたはマルチプロセッサを利用してこれらの処理を並列に処理してもよい。
【０３５８】
（６）上記実施の形態では、暗号化された保護データ１２３１、１２３２は、機器１１０、１１１の工場製造時に不揮発性記憶装置１２３０に格納するとしたが、これに限定されるものではない。つまり、暗号化された保護データ１２３１、１２３２が、機器製造後、初めて読み込まれる時に生成されてもよい。この場合、保護データの読み込み処理では、アプリＡまたはアプリＢから指定された暗号化された保護データ１２３１または１２３２が既に存在しているかが確認され、存在していない場合は、保護データの生成処理が実行される。
【０３５９】
保護データの初期化処理を、図１０、図１１および図３９のフローチャートを用いて説明する。
【０３６０】
図１０において、暗号化された保護データ１２３１、１２３２が存在しない場合には、保護データ管理部１００４は、ステップＳ１０１３をスキップし、ステップＳ１０１５の代わりに、暗復号処理部１１０４に初期化依頼を行う。その後、暗復号処理部１１０４は、初期化処理を行う。
【０３６１】
次に、初期化処理の詳細を、図３９を用いて説明する。
【０３６２】
まず初めに、暗復号処理部１１０４は、トラステッドメモリの設定を行う。設定処理（ステップＳ１０２０からステップＳ１０２３）は、図１１の復号処理と同じ処理のため説明を省略する。
【０３６３】
暗復号処理部１１０４は、トラステッドメモリの設定処理終了後、保護データを暗号化するための鍵の生成を行い（Ｓ１０３１）、不揮発性保護メモリ１２０６に格納する。
【０３６４】
暗復号処理部１１０４は、ステップＳ１０２０でトラステッドメモリに設定した領域を初期化する（Ｓ１０３２）。
【０３６５】
最後に、暗復号処理部１１０４は、データ識別子を生成（Ｓ１０２８）し、処理を終了する。ステップＳ１０２８は、図１１の復号処理と同じ処理のため説明を省略する。
【０３６６】
なお、保護データの生成処理は、アプリＡまたはアプリＢからデータの読み込み依頼の代わりに、データの初期化依頼があった時に行うとしてもよい。
【０３６７】
（７）上記実施の形態では、暗号化された保護データ１２３１、１２３２を復号した保護データ１２４１、１２４２のようなデータを、トラステッドメモリ制御部１２０３を用いて不正アプリまたは不正デバドラから保護するとしたが、これに限定されるものではない。たとえば、不揮発性記憶装置１２３０に格納されたアプリＡ１００８またはアプリＢ１００９を通常メモリ領域１２２０または通常メモリ１２６０にロードする代わりに、トラステッドメモリ領域１２４０またはトラステッドメモリ１２７０にロードし、アプリＡ１００８およびアプリＢ１００９のようなプログラムを保護するとしてもよい。
【０３６８】
（８）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０３６９】
（９）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０３７０】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部または全てを含むように１チップ化されてもよい。
【０３７１】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路または汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、またはＬＳＩ内部の回路セルの接続および設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０３７２】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０３７３】
（１０）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０３７４】
（１１）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０３７５】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０３７６】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０３７７】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０３７８】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０３７９】
（１２）上記実施の形態および上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０３８０】
本発明は、ＣＰＵが特権モードの時に動作するプログラムからのアクセスを防止するトラステッドメモリ制御部を有し、特権モードで、悪意を持った攻撃者によるプログラムが動作しても、ユーザのデータを保護可能な情報処理装置等として有用である。また特権モードで、悪意を持った攻撃者によるプログラムによる攻撃から、アプリケーションプログラムを保護可能な情報処理装置等にも適用できる。
【符号の説明】
【０３８１】
１００  アプリ配信システム
１１０、１１１  機器
１２０  アプリ配信サーバ
１３０  開発装置
１０００  通常のソフトウェア実行環境（通常環境）
１００１、１２２１  汎用オペレーティングシステム（汎用ＯＳ）
１００２  カーネル
１００３  不揮発性メモリ管理部
１００４  保護データ管理部
１００５  デバドラＡ
１００６  デバドラＢ
１００７、１２２２  ダウンロード制御アプリ
１００８、１２２３  アプリＡ
１００９、１２２４  アプリＢ
１１００  安全なソフトウェア実行環境（保護環境）
１１０１、１２１０  セキュアオペレーティングシステム（セキュアＯＳ）
１１０２、１２１１  セキュアブート部
１１０３、１２１２  メモリ設定部
１１０４、１２１３  暗復号処理部
１２００  システムＬＳＩ
１２０１  ＣＰＵ
１２０２  ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）
１２０３  トラステッドメモリ制御部
１２０４  実行環境切替部
１２０５  内部保護メモリ
１２０６  不揮発性保護メモリ
１２２０  通常メモリ領域
１２２５  ダウンロード制御アプリ用のデータ
１２２６  アプリＡ用のデータ
１２２７  アプリＢ用のデータ
１２３０  不揮発性記憶装置
１２３１  アプリＡ用の暗号化された保護データ
１２３２  アプリＢ用の暗号化された保護データ
１２４０  トラステッドメモリ領域
１２４１  アプリＡ用の保護データ
１２４２  アプリＢ用の保護データ
１２５０  メモリ
１２６０  通常メモリ
１２７０  トラステッドメモリ
１３００  アクセス判定部
１３０１  領域判定部
１３０２  モード判定部
１３０３  プログラム・領域対応判定部
１３０４  プログラム・領域判定部
１３１０  アクセス制御部
１３１１  有効フラグ保持部
１３１２  判定部
１３１３  設定部
１３１４  デバドラアクセス許可アプリＩＤリスト保持部
１３２０  判定部
１３２１  アドレス取得部
１３２２  アドレス保持部
１３２３  設定部
１３２４  領域番号通知部
１３３０  判定部
１３３１  ＣＰＵモード取得部
１３４０  判定部
１３４１  アプリＩＤ取得部
１３４２  領域番号取得部
１３４３  アプリＩＤ・領域対応保持部
１３４４  設定部
１３５０  判定部
１３５１  アプリＩＤ取得部
１３５２  アドレス取得部
１３５３  アプリＩＤ・アドレス保持部
１３５４  設定部
２０００  アプリ保持部
２００１  アプリ受信処理部
２００２  アプリ送信処理部
３０００  パッケージ生成部
３００１  設定ファイル生成部
３００２  鍵ペア保持部
３００３  鍵ペア生成部
３００４  デバッグ処理部
３００５  アップロード処理部
３１００  コンパイラ
３１０１  リンカ
３１０２  パッケージ生成ツール
３１１０  プログラムソースコード
３１１１  ダウンロードパッケージ
３１１２  秘密鍵
３１１３、３２０６  公開鍵証明書
３１１４、３２０４  設定ファイル
３２０２  アプリ
３２０３  デバドラ
３２０５  アプリ署名リスト
【図１】
0005631334.tif 000002
【図２】
0005631334.tif 000003
【図３】
0005631334.tif 000004
【図４】
0005631334.tif 000005
【図５】
0005631334.tif 000006
【図６】
0005631334.tif 000007
【図７】
0005631334.tif 000008
【図８】
0005631334.tif 000009
【図９】
0005631334.tif 000010
【図１０】
0005631334.tif 000011
【図１１】
0005631334.tif 000012
【図１２】
0005631334.tif 000013
【図１３】
0005631334.tif 000014
【図１４】
0005631334.tif 000015
【図１５】
0005631334.tif 000016
【図１６】
0005631334.tif 000017
【図１７Ａ】
0005631334.tif 000018
【図１７Ｂ】
0005631334.tif 000019
【図１８】
0005631334.tif 000020
【図１９】
0005631334.tif 000021
【図２０Ａ】
0005631334.tif 000022
【図２０Ｂ】
0005631334.tif 000023
【図２１】
0005631334.tif 000024
【図２２】
0005631334.tif 000025
【図２３】
0005631334.tif 000026
【図２４】
0005631334.tif 000027
【図２５】
0005631334.tif 000028
【図２６】
0005631334.tif 000029
【図２７】
0005631334.tif 000030
【図２８Ａ】
0005631334.tif 000031
【図２８Ｂ】
0005631334.tif 000032
【図２９】
0005631334.tif 000033
【図３０】
0005631334.tif 000034
【図３１】
0005631334.tif 000035
【図３２】
0005631334.tif 000036
【図３３】
0005631334.tif 000037
【図３４】
0005631334.tif 000038
【図３５】
0005631334.tif 000039
【図３６】
0005631334.tif 000040
【図３７】
0005631334.tif 000041
【図３８】
0005631334.tif 000042
【図３９】
0005631334.tif 000043
【図４０】
0005631334.tif 000044