(57)【要約】      （修正有）【課題】ペリフェラルへのアクセスに対してセキュアにフィルタをかけて実行することのできる情報処理装置を提供する。【解決手段】セキュアＯＳ部は、処理判定部と、処理実行部と、セキュアデバイスアクセス部と、エントリ部とを備える。処理判定部は、アクセス種別とアクセス先の物理アドレス、アクセス種別がライトの場合には書き込み対象のデータを受け取ると共に、処理表管理部から処理の一覧を取得し、実行される処理を決定する。処理実行部は、処理の種別、アクセス種別、及びアクセス先の物理アドレス、アクセス種別がライトの場合には書き込み対象のデータを受け取り、リードの場合にはセキュアデバイスアクセス部からデータを取得して、データに対して処理を実行する。セキュアデバイスアクセス部は、アクセス種別とアクセス先の物理アドレス、アクセス種別がライトの場合にはライトするデータを受け取り、物理アドレスが示す周辺機器にアクセスする。【選択図】図２
2015060569.tif 000002
【特許請求の範囲】
【請求項１】
セキュアモードとノンセキュアモードとに選択的に切り替えられ、主記憶部に対してモードごとに独立したアクセス権を設定可能であり、それぞれのモードで所定のデータ処理を行なうプロセッサ部と、
前記セキュアモードで動作するセキュアＯＳ部と、
前記ノンセキュアモードで動作するノンセキュアＯＳ部と、
前記セキュアＯＳ部と、前記ノンセキュアＯＳ部とを切り替えるモニタ部と、
を備え、
前記セキュアＯＳ部は、
所定の処理ごとに、アクセス対象のデータの前記主記憶部における物理アドレスと、リード、及びライトのアクセス種別とを対応付けて記憶する処理表管理部と、
所定の処理ごとに、前記処理表管理部を参照して前記ノンセキュアＯＳ部からのリード、及びライトのアクセスの少なくとも一方を禁止する前記主記憶部の保護アドレスを設定するメモリ保護設定部と、
前記アクセス種別と、アクセス先の物理アドレスと、前記アクセス種別がライトの場合には書き込み対象のデータと、を受け取るとともに、前記処理表管理部から処理の一覧を取得し、実行される処理の種別を決定する処理判定部と、
前記処理の種別と、前記アクセス種別と、アクセス先の物理アドレスと、前記アクセス種別がライトの場合には書き込み対象のデータと、を前記処理判定部から受け取り、前記アクセス種別がリードの場合にはセキュアデバイスアクセス部からデータを取得して、データに対して前記処理を実行する処理実行部と、
前記アクセス種別と、アクセス先の物理アドレスと、前記アクセス種別がライトの場合にはライトするデータと、を受け取り、前記物理アドレスが示す周辺機器にアクセスするセキュアデバイスアクセス部と、
前記モニタ部のＯＳ切換え部から前記アクセス種別と、アクセス先の物理アドレスと、前記アクセス種別がライトの場合には書き込み対象のデータと、を受け取り、前記処理判定部を呼び出すとともに、前記アクセス種別がリードの場合には前記処理判定部から読み込んだデータと、を取得し、前記ＯＳ切替え部を呼び出すエントリ部と、
を備え、
前記モニタ部は、
前記セキュアＯＳ部と、前記ノンセキュアＯＳ部との間でＯＳの切り替え制御を行うＯＳ切替え部と、
実行が拒否された命令の取得を行って、前記アクセス種別の判別を行うとともに、前記アクセス種別がリードの場合には読み込み先の仮想アドレスと、前記アクセス種別がライトの場合には書き込むデータと、を取得する命令解析部と、
前記ノンセキュアＯＳ部のページテーブルを参照して仮想アドレスから物理アドレスに変換するアドレス変換部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記処理表管理部が記憶する処理の設定を更新する処理設定部と、
所定のイベントを検知し、前記イベントを検知した場合に、前記処理設定部に前記処理の設定の変更を命令するイベント検知部と、
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記周辺機器に対する割込み要求があった際に、実行中の処理を中断する割り込み制御部と、
前記実行中の処理が中断された際に、前記割込み制御部よって呼び出され、中断した処理の実行状態を保存して、前記ＯＳ切替え部を呼び出すトラップ部と、
ＯＳが切替される際に呼び出され、前記処理判定部を呼び出すとともに、前記割込み要求が完了したあとに、前記ＯＳ切替え部を呼び出すセキュア割り込みハンドラ部と、
を更に備え、
前記処理判定部は、前記割込み要求にて指定された処理と一致する処理を前記処理表管理部から取得して、前記処理実行部へと渡し、
前記処理実行部は、一致した処理を実行後、前記セキュア割込みハンドラ部を呼び出す
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
アクセス先の前記周辺機器の物理アドレスからパケット内の位置を算出するプロトコル解析部と、
前記プロトコル解析部から呼び出され、データのカプセル化、及びカプセル化除去を行うカプセル処理部と、
を更に備え、
前記処理実行部は、前記プロトコル解析部に対してアクセス先の物理アドレスと、前記アクセス種別と、前記アクセス種別がライトの場合にはライトを行うデータと、を渡して、パケット送受信を要求する
ことを特徴とする請求項１〜３のいずれか一項に記載の情報処理装置。
【請求項５】
ストレージに対する命令レジスタへのアクセス時にストレージアクセス命令を解析し、アクセス先のストレージ上での位置を得る位置解析部と、
前記位置解析部からストレージ上での位置と、データと、暗号化、又は復号化の種別と、を与えられて呼び出され、与えられたデータの暗号化、又は復号化する暗号化処理部と、
を更に備え、
前記処理実行部は前記ストレージに対する命令レジスタへのアクセス時に前記位置解析部に対して命令解析を要求する
ことを特徴とする請求項１〜４のいずれか一項に記載の情報処理装置。
【請求項６】
ストレージに対する命令レジスタへのアクセス時に前記処理実行部から呼び出され、ストレージアクセス命令を解析し、アクセス先のストレージ上での位置を得る位置解析部と、
前記処理実行部から呼び出される際に命令種別を受け取り、前記命令種別に応じたネットワークに送出するパケットの生成、及びネットワークから受信したパケットの解析を行うパケット生成・解析部と
を備えることを特徴とする請求項１〜４のいずれか一項に記載の情報処理装置。
【請求項７】
セキュアモードとノンセキュアモードとに選択的に切り替えられ、主記憶部に対してモードごとに独立したアクセス権を設定可能であり、それぞれのモードで所定のデータ処理を行なうプロセッサ部を備えるコンピュータを、
前記セキュアモードで動作するセキュアＯＳ部と、
前記ノンセキュアモードで動作するノンセキュアＯＳ部と、
前記セキュアＯＳ部と、前記ノンセキュアＯＳ部とを切り替えるモニタ部として機能させ、
前記セキュアＯＳ部は、
所定の処理ごとに、アクセス対象のデータの前記主記憶部における物理アドレス、及びリード、及びライトのアクセス種別を対応付けて記憶する処理表管理部と、
所定の処理ごとに、前記処理表管理部を参照して前記ノンセキュアＯＳ部からのリード、及びライトのアクセスの少なくとも一方を禁止する前記主記憶部の保護アドレスを設定するメモリ保護設定部と、
前記アクセス種別とアクセス先の物理アドレス、前記アクセス種別がライトの場合には書き込み対象のデータを受け取るとともに、前記処理表管理部から処理の一覧を取得し、実行される処理を決定する処理判定部と、
前記処理判定部から、前記処理の種別、前記アクセス種別、及びアクセス先の物理アドレス、前記アクセス種別がライトの場合には書き込み対象のデータを受け取り、リードの場合にはセキュアデバイスアクセス部からデータを取得して、データに対して前記処理を実行する処理実行部と、
前記アクセス種別とアクセス先の物理アドレス、前記アクセス種別がライトの場合にはライトするデータを受け取り、前記物理アドレスが示す周辺機器にアクセスするセキュアデバイスアクセス部と、
前記モニタ部のＯＳ切換え部から前記アクセス種別と、アクセス先の物理アドレスと、前記アクセス種別がライトの場合にはライトデータと、を受け取り、前記処理判定部を呼び出すとともに、前記アクセス種別がリードの場合には前記処理判定部から読み込んだデータと、を取得し、前記ＯＳ切替え部を呼び出すエントリ部と、
を備え、
前記モニタ部は、
前記セキュアＯＳ部と、前記ノンセキュアＯＳ部との間でＯＳの切り替え制御を行うＯＳ切替え部と、
命令の前記アクセス種別の判別、前記アクセス種別がリードの場合には読み込み先の物理アドレス、前記アクセス種別がライトの場合には書き込むデータを取得する命令解析部と、
前記ノンセキュアＯＳ部のページテーブルを参照して仮想アドレスから物理アドレスに変換するアドレス変換部と、を備える、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、およびプログラムに関する。
【背景技術】
【０００２】
近年、単一の計算機上で複数のオペレーティング・システム（ＯＳ）を同時に実行させるための仮想化技術がサーバから組み込み機器に至るまで広く利用されつつある。仮想化技術を用いるとペリフェラル（周辺機器）へのアクセスを監視することが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−５２７１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＡＲＭ  ＴｒｕｓｔＺｏｎｅ（登録商標）においてはメモリ保護機能を有しており、ＡＲＭプロセッサではメモリ空間にペリフェラルのバッファやレジスタがマップされるため、ペリフェラルへのアクセスを監視することが可能である。しかし、ＡＲＭ  ＴｒｕｓｔＺｏｎｅ機能によりペリフェラルへのアクセスに対してセキュアにフィルタをかけて実行する構成が明らかではない。ペリフェラルの仮想化によってペリフェラルアクセスに対して暗号化などのフィルタをかけてペリフェラルアクセス内容を変換する構成を明らかにする必要がある。
【０００５】
本発明の実施形態は、上記に鑑みてなされたものであって、ペリフェラルへのアクセスにおけるセキュリティを向上させることのできる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明の実施形態は、プロセッサ部と、セキュアＯＳ部と、ノンセキュアＯＳ部と、モニタ部とを備える。プロセッサ部は、セキュアモードとノンセキュアモードとに選択的に切り替えられ、主記憶部に対してモードごとに独立したアクセス権を設定可能であり、それぞれのモードで所定のデータ処理を行なう。セキュアＯＳ部は、前記セキュアモードで動作する。ノンセキュアＯＳ部は、前記ノンセキュアモードで動作する。モニタ部は、前記セキュアＯＳ部と、前記ノンセキュアＯＳ部とを切り替える。
【０００７】
前記セキュアＯＳ部は、処理表管理部と、メモリ保護設定部と、処理判定部と、処理実行部と、セキュアデバイスアクセス部と、エントリ部とを備える。処理表管理部は、所定の処理ごとに、アクセス対象のデータの前記主記憶部における物理アドレス、及びリード、及びライトのアクセス種別を対応付けて記憶する。メモリ保護設定部は、所定の処理ごとに、前記処理表管理部を参照して前記ノンセキュアＯＳ部からのリード、及びライトのアクセスの少なくとも一方を禁止する前記主記憶部の保護アドレスを設定する。処理判定部は、前記アクセス種別とアクセス先の物理アドレス、前記アクセス種別がライトの場合には書き込み対象のデータを受け取るとともに、前記処理表管理部から処理の一覧を取得し、実行される処理を決定する。処理実行部は、前記処理判定部から、前記処理の種別、前記アクセス種別、及びアクセス先の物理アドレス、前記アクセス種別がライトの場合には書き込み対象のデータを受け取り、リードの場合にはセキュアデバイスアクセス部からデータを取得して、データに対して前記処理を実行する。セキュアデバイスアクセス部は、前記アクセス種別とアクセス先の物理アドレス、前記アクセス種別がライトの場合にはライトするデータを受け取り、前記物理アドレスが示す周辺機器にアクセスする。エントリ部は、前記ＯＳ切替え部から前記アクセス種別と、アクセス先の物理アドレス、前記アクセス種別がライトの場合にはライトデータを受け取り、前記処理判定部を呼び出すとともに、前記アクセス種別がリードの場合には前記処理判定部から読み込んだデータを取得し、前記ＯＳ切替え部を呼び出す。
【０００８】
前記モニタ部は、ＯＳ切替え部と、命令解析部と、アドレス変換部とを備える。ＯＳ切替え部は、前記セキュアＯＳ部と、前記ノンセキュアＯＳ部との間でＯＳの切り替え制御を行う。命令解析部は、命令の前記アクセス種別の判別、前記アクセス種別がリードの場合には読み込み先の物理アドレス、前記アクセス種別がライトの場合には書き込むデータを取得する。アドレス変換部は、前記ノンセキュアＯＳ部のページテーブルを参照して仮想アドレスから物理アドレスに変換する。
【図面の簡単な説明】
【０００９】
【図１】実施形態の情報処理装置のハードウェア構成を示すブロック図。
【図２】実施形態の情報処理装置の構成を示す図。
【図３】実施形態の情報処理装置のソフトウェア構成を示す図。
【図４】ノンセキュアＯＳのページテーブルアドレスレジスタの値を示す図。
【図５】実施形態の処理の種類ごとに定められたフィルタの設定を示す図。
【図６】ノンセキュアＯＳおよびセキュアＯＳのコンテキストを示す図。
【図７】実施形態のセキュアＯＳ部の起動時に行われる処理を示す図。
【図８】実施形態のメモリアクセス検出時の処理を示す図。
【図９】実施形態の書き込みデータ取得の処理を詳細に示した図。
【図１０】実施形態の読み込みデータ保存の処理を詳細に示した図。
【図１１】別例のノンセキュアＯＳおよびセキュアＯＳのコンテキストを示す図。
【図１２】実施形態の変形例の情報処理装置のソフトウェア構成を示す図。
【図１３】実施形態の処理表の動的変更時の処理を示す図。
【図１４】第２の実施形態の情報処理装置のソフトウェア構成を示す図。
【図１５】第２の実施形態の割り込み処理表を示す図。
【図１６】第２の実施形態の割り込み発生時の処理の流れを示す図。
【図１７】第３の実施形態の情報処理装置のソフトウェア構成を示す図。
【図１８】第３の実施形態の処理のフィルタの設定を示す図。
【図１９】第３の実施形態のフィルタ処理の流れを示す図。
【図２０】第４の実施形態の情報処理装置のソフトウェア構成を示す図。
【図２１】第４の実施形態のフィルタの設定を示す図。
【図２２】第４の実施形態のフィルタ処理の流れを示す図。
【図２３】第５の実施形態の情報処理装置のソフトウェア構成を示す図。
【図２４】第５の実施形態のフィルタの設定を示す図。
【図２５】第５の実施形態のフィルタ処理の流れを示す図。
【図２６】第６の実施形態の情報処理装置のソフトウェア構成を示す図。
【図２７】第６の実施形態のモニタ呼出し時の処理を示す図。
【図２８】第６の実施形態のアボート発生時の処理を示す図。
【図２９】第６の実施形態の変形例のアボート発生時の処理を示す図。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
以下、図面を参照しながら、情報処理装置１の一実施形態を説明する。図１は、第１の実施形態で説明する情報処理装置１のハードウェア構成を概略的に示している。この情報処理装置１は、ＣＰＵ部２００（プロセッサ部）、主記憶部３００、ストレージ部１００を備える。またＣＰＵ部２００はメモリ保護部２０１、割り込み制御部２０２や非図示のレジスタ部、演算部などを備える。ストレージ部１００にはモニタ部５００、セキュアＯＳ部７００、ノンセキュアＯＳ部６００といったＣＰＵ部２００で実行されるプログラムが格納されている。
【００１１】
ＣＰＵ部２００は主記憶部３００に格納された命令列の実行を行う。主記憶部３００にはオペレーティングシステム（ＯＳ）と呼ばれるプログラムが格納され、ＣＰＵ部２００により実行される。また、主記憶部３００にはコンテキスト待避部３０１が設けられている。ＯＳは各種デバイスの管理などを行い、アプリケーションから各種デバイスを利用できるようにするためのプログラムである。またＣＰＵ部２００は複数のＯＳを実行する機能を有し、本実施形態ではセキュアＯＳとノンセキュアＯＳの二つの実行を想定する。またモニタ部５００は、各ＯＳ部６００、７００の起動や切替え、各ＯＳ部６００、７００が利用するハードウェアリソースの管理などといった各ＯＳ部６００、７００の管理を行うためのプログラムである。ここでいうＯＳの切り替えとは、同時に実行可能なＯＳの数はＣＰＵが同時に実行できるプログラムの数に依存するが、時分割で各ＯＳを切替えて実行することで仮想的にＯＳを複数実行しているように見せかけることを指す。ＯＳ側の要求やハードウェアからの割り込みなどによりモニタ部５００が呼び出され、ＯＳの切り替えが制御される。また、ペリフェラル部４００は、情報処理装置１に接続されて使用されるものであり、例えばＵＳＢデバイスや、マウス、キーボード、ハードディスクなどの装置である。
【００１２】
図２、及び図３は第１の実施形態におけるＣＰＵ部２００や主記憶部３００を含むハードウェアとＣＰＵ部２００で動作するソフトウェア構成の一例を示している。なお、以下で示すソフトウェアは、電子回路などのハードウェアによって実現してもよい。図中におけるモニタ部５００およびノンセキュアＯＳ部６００、セキュアＯＳ部７００はソフトウェアである。以降、図２の詳細な内部構成を示す図３を用いてペリフェラルの仮想化機能を有する第１の実施形態について詳細に説明する。
【００１３】
ノンセキュアＯＳ部６００はノンセキュアデバイスアクセス部６０１を有する。ノンセキュアデバイスアクセス部６０１はペリフェラル部４００に対して読み書きの命令を出し、ペリフェラルの制御を行う機能を有する。モニタ部５００はコンテキスト保存復帰部５０５、ＯＳ切替え部５０４、トラップ部５０１、命令解析部５０２、アドレス変換部５０３を備えている。
【００１４】
コンテキスト保存復帰部５０５はＯＳ切り替えの際に切替え元ＯＳのコンテキストをコンテキスト待避部３０１に保存し、切替え先のコンテキストをコンテキスト待避部３０１から復帰する機能を有する。ＯＳの切替え時にコンテキストの保存、復帰を行うことで一つのプロセッサ内で擬似的にＯＳを同時に動かしているように見せかけることが可能となる。
【００１５】
ＯＳ切替え部５０４はＯＳの切替え命令を検知し、コンテキスト保存復帰部５０５に対してコンテキストの保存復帰を命令する機能を有する。ＯＳ切替え部５０４はエントリ部７０１からＯＳ切替え命令により呼び出される場合とモニタ部５００のメモリ保護例外の発生によりトラップ部５０１から呼び出される場合が存在する。トラップ部５０１から呼び出された場合には、ＯＳ切替え部５０４はノンセキュアＯＳのコンテキスト保存、セキュアＯＳのコンテキスト復帰をコンテキスト保存復帰部５０５に対して命令する。その後、トラップ部５０１から受け取った、リード・ライトの種別、リード・ライト対象物理アドレス、ライトの場合は書き込みを行うデータをセキュアＯＳ部７００のエントリ部７０１に渡す。エントリ部７０１から呼び出された場合には、ＯＳ切替え部５０４は読み込み結果を受け取り、セキュアＯＳのコンテキスト保存、ノンセキュアＯＳのコンテキスト復帰をコンテキスト保存復帰部５０５に対して命令する。その後、命令解析部５０２が保存した読み込み先レジスタの情報が指すレジスタに読み込み結果を書き込む。さらにノンセキュアデバイスアクセス部６０１のメモリ保護例外が発生した次の命令に戻る。
【００１６】
トラップ部５０１はメモリ保護部２０１でのメモリ保護例外発生によりメモリ保護部２０１から呼び出される。その際にトラップ部５０１は例外が発生した命令が配置されているメモリの仮想アドレスを取得し、命令解析部５０２に渡す。さらに、命令解析の完了後ＯＳ切替え部５０４に命令解析部５０２から受け取ったリード・ライトの種別、リード・ライト対象物理アドレス、ライトの場合は書き込みを行うデータを渡し、ＯＳの切替えを命令する機能を有する。
【００１７】
命令解析部５０２はトラップ部５０１から呼び出され、例外が発生した命令を解析する機能を有する。命令解析部５０２は解析対象の命令が配置されているメモリの仮想アドレスを受け取り、アドレス変換部５０３を呼び出し、仮想アドレスに対応する物理アドレスを取得する。さらに、命令解析部５０２は取得した物理アドレスから命令を取得し、命令のリード・ライトの種別、リード・ライトを行う対象の仮想アドレスが格納されたレジスタの情報、リードの場合には保存先レジスタ情報、ライトの場合には書き込む値が格納されたレジスタ情報もしくは書き込む即値情報を解析する。さらに、命令解析部５０２はリード・ライト対象の仮想アドレスが格納されたレジスタ情報を元に、レジスタを参照し、リード・ライト対象の仮想アドレス情報を得る。命令解析部５０２は、アドレス変換部５０３を呼び出し、リード・ライト対象の仮想アドレスを物理アドレスに変換する。命令が書き込み命令でかつレジスタに書き込む値が格納されている場合には、命令解析部５０２はレジスタから書き込む値を取得する。命令が読み込み命令の場合には、命令解析部５０２は読み込み先のレジスタの情報を保存しておく。命令解析部５０２は、解析結果として命令のリード・ライトの種別、リード・ライト対象の物理アドレス、ライトの場合は書き込みを行うデータ（命令に含まれる即値情報もしくはレジスタから得た書き込む値）をトラップ部５０１に返す。
【００１８】
アドレス変換部５０３はノンセキュアＯＳで実行中のタスクのページテーブルを参照し、呼び出し元から与えられた仮想アドレスを物理アドレスに変換し、呼び出し元に返す機能を有する。アドレス変換部５０３はノンセキュアＯＳのページテーブルが格納されている場所を取得するために、図４に示されたノンセキュアＯＳのページテーブルアドレスレジスタの値を取得する。その後、レジスタの値が指すメモリを参照し、呼び出し元から与えられた仮想アドレスから物理アドレスに変換し、呼び出し元に返す。例えば、仮想アドレスが０ｘ００００１０００であれば物理アドレス０ｘＦ０００１０００が返される。
【００１９】
セキュアＯＳ部７００は処理表管理部７０３、メモリ保護設定部７０４、処理判定部７０２、エントリ部７０１、処理実行部７０５、セキュアデバイスアクセス部７０６を備えている。
【００２０】
処理表管理部７０３は図５に示される処理表の設定や取得を行う機能を有する。図５に示されるように、処理表には、アクセス時に検出を行いたいメモリの開始物理アドレスやサイズ、検出するリード・ライトの種別（方向）、アクセス時にかけるフィルタ処理の種類がデータとして含まれている。例えば開始物理アドレスが０ｘ１０００００１０、サイズが１０２４、方向がライト、フィルタ種類が暗号化の場合には、物理アドレスが０ｘ１０００００１０以上、（０ｘ１０００００１０＋１０２４）未満の領域に対してライトが行われた際に、そのデータの暗号化を行うことを意味する。この物理アドレスが例えば、ネットワークカードの送信バッファ領域であれば送信するパケットの暗号化を、ストレージの書き込みバッファ領域であればストレージに書き込むデータの暗号化が行われる。
【００２１】
メモリ保護設定部７０４は処理表管理部７０３から処理表の内容を取得し、メモリ保護部２０１に対してノンセキュアＯＳからのメモリアクセスの検出を行う内容を設定する機能を有する。メモリ保護設定部７０４は処理表の一覧を取得し、それぞれの項目について開始物理アドレスとサイズをメモリ保護設定部７０４に渡して、方向がリードならばリードの禁止設定を、方向がライトならばライトの禁止設定を、方向がリード・ライトであればリード・ライト両方の禁止設定を行い、メモリ空間における保護アドレスを設定する。
【００２２】
処理判定部７０２はエントリ部７０１からアクセス対象の物理アドレス、リード・ライトの種別を受け取る。さらに種別がライトの場合にはエントリ部７０１から書き込むデータを受け取るとともに、処理表管理部７０３から処理表を受け取る。また処理判定部７０２はアクセス対象の物理アドレスが含まれる項目を探し、対応するフィルタ種類を決定する機能を有する。例えば、アクセス対象の物理アドレスが０ｘ１０００００１１、リード・ライトの種別がリードであれば、０ｘ１０００００１０≦０ｘ１０００００１１＜０ｘ１０００１０００＋１０２４であるため、開始物理アドレスは０ｘ１０００００１０、サイズは１０２４、方向はリード、フィルタ種類は復号化の項目が該当する。このため、フィルタ種類は復号化に決定される。さらに、処理実行部７０５に対してフィルタ種類とともに、アクセス対象の物理アドレス、リード・ライトの種別、種別がライトの場合には書き込むデータを渡す。その戻り値として、処理実行部７０５からは種別がリードの場合には読み込んだデータを受け取り、エントリ部７０１に返す。種別がライトの場合には、エントリ部７０１を何も渡さずに呼び出す。
【００２３】
エントリ部７０１はＯＳ切替え部５０４からアクセス対象の物理アドレス、リード・ライトの種別、種別がライトの場合には書き込むデータを受け取り、処理判定部７０２に渡す機能を有する。その戻り値として、処理判定部７０２からは種別がリードの場合には読み込んだデータを受け取り、ＯＳ切替え部５０４に渡す。種別がライトの場合には、ＯＳ切替え部５０４を何も渡さずに呼び出す。
【００２４】
処理実行部７０５は処理判定部７０２からフィルタ種類とともに、アクセス対象の物理アドレス、リード・ライトの種別、種別がライトの場合には書き込むデータを受け取る。さらに、種別がライトの場合にはフィルタの種別に応じてフィルタをかける。例えば暗号化であれば処理実行部７０５は渡された書き込むデータに対して暗号化を行い、記録であれば渡された書き込むデータについて書き込みログを残す。また、フィルタが破棄、かつ種別がライトであれば処理実行部７０５は何もせずに処理判定部７０２を呼び出す。一方フィルタが破棄、かつ種別がリードであれば処理実行部７０５はダミーのデータを生成し、処理判定部７０２に返す。さらに、フィルタがデータを破棄しないフィルタであれば、処理実行部７０５はアクセス対象の物理アドレス、リード・ライトの種別、種別がライトの場合にはフィルタをかけた書き込むデータをセキュアデバイスアクセス部７０６に渡す。その戻り値として、セキュアデバイスアクセス部７０６から種別がリードの場合には読み込んだデータを受け取る。さらに、種別がリードの場合には処理実行部７０５はフィルタの種別に応じてフィルタをかけて、フィルタをかけたデータを処理判定部７０２に返す。例えば種別がリードでフィルタが復号化であれば、処理実行部７０５はセキュアデバイスアクセス部７０６から受け取ったデータを復号化後、処理判定部７０２に返す。種別がライトの場合には処理実行部７０５はセキュアデバイスアクセス部７０６からは何も受け取らずに、処理判定部７０２を呼び出す。
【００２５】
セキュアデバイスアクセス部７０６はアクセス対象の物理アドレス、リード・ライトの種別、種別がライトの場合には書き込むデータを受け取る。セキュアデバイスアクセス部７０６はアクセス対象の物理アドレスが指すペリフェラル部４００に対して、リードの場合にはデータのリードを命令して読み込んだデータを受け取り、ライトの場合には書き込むデータを渡して書き込みを命令する。リードの場合には処理実行部７０５に対して読み込んだデータを返し、ライトの場合には何も渡さずに処理実行部７０５を呼び出す。
【００２６】
ハードウェア部はコンテキスト待避部３０１、ペリフェラル部４００、メモリ保護部２０１を備えている。コンテキスト待避部３０１はコンテキスト保存復帰部５０５から呼び出され、図６に示されるようにノンセキュアＯＳおよびセキュアＯＳのコンテキストを保存、取得する機能を有する。
【００２７】
ペリフェラル部４００はノンセキュアデバイスアクセス部６０１およびセキュアデバイスアクセス部７０６からアクセス先仮想アドレスを指定して呼び出され、物理アドレスへの変換後、メモリ保護部２０１に対してアクセス元（ノンセキュアデバイスアクセス部６０１もしくはセキュアデバイスアクセス部７０６）情報とアクセス先物理アドレス、アクセスのリード・ライトの種別を渡してアクセス可否の判定結果を受け取り、アクセス可能と判定された場合に周辺機器に対して実際にアクセスを行う機能を有する。
【００２８】
メモリ保護部２０１はメモリ保護設定部７０４からアクセス制御対象の開始物理アドレス、サイズ、保護したいリード・ライトの種別を受け取り、そのデータを元にペリフェラル部４００からのアクセス可否の判定依頼に返答する機能を有する。ペリフェラル部４００からはアクセス対象物理アドレスとリード・ライトの種別、アクセス元情報を受け取り、アクセス元情報がノンセキュアデバイスアクセスの場合にはメモリ保護設定部７０４から受け取った保護設定の中に合致する項目があるかどうかを判定する。合致する項目があった場合にはトラップ部５０１を呼び出す。合致する項目がなかった場合やアクセス元情報がセキュアデバイスアクセス部７０６の場合には、ペリフェラル部４００に対してアクセス可能という情報を返す。
【００２９】
次に図７のフローチャートに示されるストレージに格納されるセキュアＯＳ部７００の起動時に行われるメモリ保護設定の処理手順について述べる。まず、メモリ保護設定部７０４は処理表管理部７０３から処理表を受け取り、項目を一つ取り出し、フィルタ表に未設定の処理があるか否かを判定する（ステップＳ１０１）。フィルタ表に未設定の処理がある場合（ステップＳ１０１：Ｙｅｓ）、メモリ保護設定部７０４はアドレス（ａｄｄｒ）、サイズ（ｓｉｚｅ）、方向情報を取り出す（ステップＳ１０２）。次いで、メモリ保護設定部７０４は取り出した処理の方向情報を判定する（ステップＳ１０３）。方向情報がリードであれば（ステップＳ１０３：リード）、メモリ保護設定部７０４はメモリ保護部２０１に対してａｄｄｒ以上、（ａｄｄｒ＋ｓｉｚｅ）未満の領域のノンセキュアＯＳ領域からのリードを禁止する（ステップＳ１０４）。方向情報がライトであれば（ステップＳ１０３：ライト）、メモリ保護設定部７０４はメモリ保護部２０１に対してａｄｄｒ以上、（ａｄｄｒ＋ｓｉｚｅ）未満の領域のノンセキュアＯＳ領域からのライトを禁止する（ステップＳ１０５）。方向情報がリード・ライトであれば（ステップＳ１０３：リード・ライト）、メモリ保護設定部７０４はメモリ保護部２０１に対してａｄｄｒ以上、（ａｄｄｒ＋ｓｉｚｅ）未満の領域のノンセキュアＯＳ領域からのリード・ライトを禁止する（ステップＳ１０６）。その後、ステップＳ１０１に戻る。未設定の処理表の処理がなければ（ステップＳ１０１：Ｎｏ）、セキュアＯＳ部７００とモニタ部５００が利用するメモリ領域のノンセキュアＯＳ部６００からの読み書きの禁止設定を行うとともに、割り込み入力先をＯＳに設定して（ステップＳ１０７）、メモリ保護設定の処理を終了する。
【００３０】
続いて図８のフローチャートに示されるメモリアクセス検出時のフローについて述べる。図７のフローに示されるメモリ保護が行われた領域に対してノンセキュアＯＳ部６００からのアクセスがあった場合に図８の処理が実行される。ノンセキュアデバイスアクセス部６０１からペリフェラル部４００に対するアクセス禁止の領域へのデバイスアクセスが発生した場合を想定している（ステップＳ２０１）。この場合、メモリ保護部２０１はメモリ保護の設定に違反するアクセスであることを検知し、トラップ部５０１を呼び出す（ステップＳ２０２）。トラップ部５０１は命令解析部５０２を呼び出し、命令解析部５０２はアクセス禁止領域へのアクセスを行った命令の仮想アドレスを取得する（ステップＳ２０３）。さらに命令解析部５０２はその仮想アドレスをアドレス変換部５０３に渡し、アドレス変換部５０３は物理アドレスへの変換を行うために、ノンセキュアＯＳページテーブルアドレスレジスタの値を参照する（ステップＳ２０４）。アドレス変換部５０３はノンセキュアＯＳページテーブルアドレスレジスタの値を元に、ノンセキュアＯＳのページテーブルを参照し、アクセス禁止領域へのアクセスを行った命令の仮想アドレスから物理アドレスへの変換を行う（ステップＳ２０５）。さらに、命令解析部５０２はその物理アドレスが指す先を参照し、アクセス禁止領域へのアクセスを行った命令を取得する（ステップＳ２０６）。命令解析部５０２はその命令がペリフェラルに対するライト命令かリード命令かを判定し（ステップＳ２０７）、ライトの場合（ステップＳ２０７：ライト）には書き込もうとしたデータを取得し（ステップＳ２０８）、ステップＳ０９に進む。リードの場合（ステップＳ２０７：リード）には直接ステップＳ２０９に進む。
【００３１】
さらに、命令解析部５０２は命令の解析結果からペリフェラルのアクセス先の仮想アドレスを取得する（ステップＳ２０９）。さらに、命令解析部５０２はその仮想アドレスをアドレス変換部５０３に渡して、アドレス変換部５０３はページテーブルの参照を行い、物理アドレスに変換する（ステップＳ２１０）。
【００３２】
続いて、トラップ部５０１はＯＳ切替え部５０４を呼び出し、ＯＳ切替え部５０４はコンテキスト保存復帰部５０５に対してノンセキュアＯＳのコンテキスト保存を要求する。（ステップＳ２１１）。またＯＳ切替え部５０４は、セキュアＯＳのコンテキスト復帰を要求する（ステップＳ２１２）。その後、ＯＳ切替え部５０４はエントリ部７０１に命令解析部５０２が解析したリード・ライト種別、ペリフェラルのアクセス先物理アドレス、書き込みの場合は書き込もうとしたデータを渡す（ステップＳ２１３）。
【００３３】
エントリ部７０１は処理判定部７０２を呼び出し、処理判定部７０２は処理表管理部７０３から処理表を受け取り、エントリ部７０１から受け取ったリード・ライト種別、アクセス先物理アドレスに合致する処理表の項目を探し、取り出す（ステップＳ２１４）。処理判定部７０２は取り出した処理のリード・ライト種別を判定する（ステップＳ２１５）。取り出した処理のリード・ライト種別がリードの場合（ステップＳ２１５：リード）には、セキュアデバイスアクセス部７０６は受け取ったアクセス先物理アドレスが指す先のペリフェラル部４００からデータを取得し（ステップＳ２１６）、さらに処理表の合致する項目のフィルタ種類に応じたフィルタ処理を実行する（ステップＳ２１８）。フィルタ種類が破棄の場合にはステップＳ２１６では何もせずにステップＳ２１８ではダミーのデータを生成する。
【００３４】
取り出した処理のリード・ライト種別がライトの場合（ステップＳ２１５：ライト）には、処理実行部７０５がフィルタ種類に応じたフィルタ処理を書き込もうとしたデータに対して実行した後（ステップＳ２１７）、セキュアデバイスアクセス部７０６は受け取ったアクセス先物理アドレスが指す先のペリフェラル部４００にフィルタ処理を掛けたデータを書き込む（ステップＳ２１９）。フィルタ種類が破棄の場合にはステップＳ２１７およびステップＳ２１９では何もしない。
【００３５】
さらにモニタ部５００のＯＳ切替え部５０４に対して完了通知を読み込みの場合には読み込んだデータにフィルタを掛けたデータとともに送信する（ステップＳ２２０）。その後、ＯＳ切替え部５０４はノンセキュアＯＳのコンテキスト保存をコンテキスト保存復帰部５０５に命令し（ステップＳ２２１）、その後セキュアＯＳのコンテキスト復帰をコンテキスト保存復帰部５０５に対して命令する（ステップＳ２２２）。さらに、ＯＳ切替え部５０４は、アクセス種別を判定する（ステップＳ２２３）。アクセス種別がリードの場合には（ステップＳ２２３：リード）、エントリ部７０１から渡された読み込んだデータを命令解析部５０２が解析した保存先のレジスタに対して書き込んでステップＳ２２５に移る。アクセス種別がライトの場合（ステップＳ２２３：ライト）には直接ステップＳ２２５に移る。さらに、アクセス禁止領域へのデバイスアクセスを行った命令の次の命令に戻り（ステップＳ２２５）、処理は終了となる。
【００３６】
図９は図８のステップＳ２０８の書き込みデータ取得（ａ）の処理を詳細に示したフローである。書き込み命令は命令自体に書き込むデータが含まれる即値命令と、レジスタに格納されたデータを書き込む命令の二種類がある。このため、書き込むデータを取得するにはその二つを区別する必要があり、そのフローについて説明する。
【００３７】
書き込みデータ取得時に、まず命令解析部５０２はその命令が即値命令かどうかを判定する（ステップＳ３０１）。即値命令の場合には（ステップＳ３０１：Ｙｅｓ）、即値が命令内に含まれるため、命令解析部５０２は即値を取得し（ステップＳ３０２）、処理が完了となる。
【００３８】
即値命令でない場合には（ステップＳ３０１：Ｎｏ）、書き込むデータが格納されたレジスタを取得する（ステップＳ３０３）。さらに、命令解析部５０２はアクセスを行ったモードに切替え（ステップＳ３０４）、対象のレジスタデータを取得する（ステップＳ３０５）。その後、命令解析部５０２はモードを、モード切替を行う前のモードに戻す（ステップＳ３０６）。ここでモード切替を行う理由は、プロセッサによってはレジスタがバンクされるためである。
【００３９】
図１０は図８の読み込みデータ取得（ｂ）の処理を詳細に示したフローである。まず、ＯＳ切替え部５０４は読み込み先の対象レジスタを取得し（ステップＳ４０１）、アクセスを行ったモードにモードを切替える（ステップＳ４０２）。さらにＯＳ切替え部５０４は、レジスタにエントリ部７０１から受け取ったデータを保存し（ステップＳ４０３）、モードを切替える前のモードに戻して（ステップＳ４０４）、処理が完了となる。例えば図１１に示すように、ノンセキュアＯＳからｒ０に対して読み込みを行う命令をアクセス検出が行われる領域に対して発行した場合、ノンセキュアＯＳ側に戻る際にはノンセキュアＯＳ側のｒ０にはセキュアＯＳ側でペリフェラルから読み込んだ値にフィルタを掛けた値が格納される。
【００４０】
図３の構成では処理表は固定であることを想定していた。例えばブートローダ起動時にはフィルタを掛けず、ＯＳ起動が始まったらフィルタを掛けるといったことも考えられるが、処理表が固定の場合には困難である。図１２は動的な処理表の変更に対応する図３の構成の変形例である。
【００４１】
図１２はモニタ部５００ａに処理設定部５０７とイベント検知部５０６を備える点が異なる。イベント検知部５０６は、ＯＳ起動などのイベントを検知し、処理設定部５０７にフィルタ設定の変更を命令する機能を有する。処理設定部５０７はセキュアＯＳ部７００の処理表管理部７０３が記憶する処理表を更新する機能を有する。処理表管理部７０３に対して物理開始アドレス、サイズ、方向、フィルタ内容を与え、処理表の項目追加、削除を依頼する。
【００４２】
図１３は処理表の動的変更時の処理フローである。イベント検知部５０６はイベント発生時に、処理設定部５０７を呼び出す。処理設定部５０７は変更する内容を処理表管理部７０３に対して通知する。処理表管理部７０３は、追加命令なのか削除命令なのかを判定し（ステップＳ６１０）、削除命令の場合には（ステップＳ６１０：削除）、記憶する処理表から指定された項目を削除する（ステップＳ６０８）。そして処理表管理部７０３は、メモリ保護設定をメモリ保護部２０１から削除し（ステップＳ６０９）、処理終了となる。
【００４３】
一方、追加設定の場合には（ステップＳ６１０：追加）、処理表管理部７０３は、処理表に項目を追加した後（ステップＳ６０２）、アドレス・サイズ・方向情報を受け取る（ステップＳ６０３）。そして、処理表管理部７０３は、処理の方向情報を判定する（ステップＳ６０４）。方向情報がリードであれば（ステップＳ６０４：リード）、メモリ保護設定部７０４はメモリ保護部２０１に対してａｄｄｒ以上、（ａｄｄｒ＋ｓｉｚｅ）未満の領域のノンセキュアＯＳ領域からのリードを禁止する（ステップＳ６０５）。
【００４４】
方向情報がライトであれば（ステップＳ６０４：ライト）、メモリ保護設定部７０４はメモリ保護部２０１に対してａｄｄｒ以上、（ａｄｄｒ＋ｓｉｚｅ）未満の領域のノンセキュアＯＳ領域からのライトを禁止する（ステップＳ６０６）。方向情報がリード・ライトであれば（ステップＳ６０４：リード・ライト）、メモリ保護設定部７０４はメモリ保護部２０１に対してａｄｄｒ以上、（ａｄｄｒ＋ｓｉｚｅ）未満の領域のノンセキュアＯＳ領域からのリード・ライトを禁止する（ステップＳ６０７）。以上で処理は完了となる。変形例においても起動時のフローは図７と、メモリアクセス検出時のフローは図８と同等である。
【００４５】
本実施形態の情報処理装置１にあっては、ノンセキュアＯＳ部６００のノンセキュアデバイスアクセス部６０１が意識することなく、ペリフェラルアクセス内容を変更することができる。例えばペリフェラルとしてネットワークインタフェースを想定した場合には、ネットワーク通信を透過的に暗号化することや、ストレージを想定した場合にはストレージへの入出力を透過的に暗号化することが可能となる。また、ペリフェラルアクセスを異種のペリフェラルへのアクセスに変換することも可能である。例えばローカルストレージへのアクセスをトラップし、ネットワーク上のストレージへのアクセスに変換したり、タッチパッドによるソフトウェアキーボードの入出力をハードウェアキーボードとして仮想化したりといったことも可能となる。また、メモリ保護機能によりノンセキュアＯＳ部６００からはセキュアＯＳ部７００の処理の改竄が不可能であるため、安全にデータの暗号化などのフィルタを行うことができる。
【００４６】
（第２の実施形態：割り込み有り）
第１の実施形態ではペリフェラルからの割り込みについては考慮しておらず、データのリードやライトを契機としてデータに対してフィルタを掛けることを前提とした構成となっていた。実際の計算機ではペリフェラルからのデータ入力通知などで割り込みを使うことも多いため、第２の実施形態では割り込みを契機としてフィルタを掛けることのできる構成について詳述する。
【００４７】
図１４は第２の実施形態における情報処理装置１の構成を示す一例である。図１４は図３とノンセキュアＯＳ部６００ａに割り込みハンドラ部を備える点、セキュアＯＳ部７００ａにセキュア割り込みハンドラ部７０７を備える点、ハードウェア部に割り込み制御部２０２を備える点、およびトラップ部５０１ａとＯＳ切替え部５０４ａ、処理判定部７０２ａ、処理表管理部７０３ａ、処理実行部７０５ａが有する機能が異なる。
【００４８】
割り込み制御部２０２はペリフェラルに関する割り込み要求があった際に、実行中の処理を中断してトラップ部５０１ａを呼び出す機能を有する。トラップ部５０１ａは実行中だった処理を割り込み処理の完了後に再開するために、中断した処理の戻り先や処理の実行状態を保存する機能を有する。割り込み要求の例としては、ペリフェラルがネットワークインタフェースの場合にはパケットの到着通知や、ストレージの場合にはディスク読み込み完了通知などがある。
【００４９】
トラップ部５０１ａは第１の実施形態で述べた機能に加えて、割り込み制御部２０２から呼び出された場合にＯＳ切替え部５０４ａを呼び出す機能を有する。トラップ部５０１ａはＯＳ切替え部５０４ａを呼び出す際に、割り込み制御部２０２からの呼び出しであることを通知する。
【００５０】
ＯＳ切替え部５０４ａは第１の実施形態で述べた機能に加えて、トラップ部５０１ａから呼び出された際にトラップ部５０１ａの呼び出し元が割り込み制御部２０２の場合に、セキュア割り込みハンドラ部７０７を呼び出す機能を有する。その際に、実行を中断したＯＳがノンセキュアＯＳ、セキュアＯＳのどちらであるかの情報を保存する。実行を中断したＯＳがノンセキュアＯＳの場合には、ＯＳ切替え部５０４ａはコンテキスト保存復帰部５０５に対してノンセキュアＯＳのコンテキストの保存とセキュアＯＳのコンテキストの復帰を命令する。コンテキストの保存復帰後、ＯＳ切替え部５０４ａはセキュアＯＳ部７００ａのセキュア割り込みハンドラ部７０７を呼び出す。また、セキュア割り込みハンドラ部７０７からＯＳ切替え部５０４ａが呼び出された場合には、ＯＳ切替え部５０４ａはコンテキスト保存復帰部５０５に対してセキュアＯＳのコンテキストの保存とノンセキュアＯＳのコンテキストの復帰を命令し、さらにノンセキュア割り込みハンドラ部７０７を呼び出す機能を有する。
【００５１】
セキュア割り込みハンドラ部７０７はＯＳ切替え部５０４ａから呼び出され、処理判定部７０２を呼び出す機能を有する。この際に割り込みの種別を判定し、処理判定部７０２ａに対して割り込みの種別を通知する。割り込みの種別とは、割り込みが発生したペリフェラルと割り込みの要因を区別するための情報で、例えばディスク読み込みの完了や、タイマー割り込みなどがある。さらに、セキュア割り込みハンドラ部７０７は割り込みフィルタ処理の完了後に処理判定部７０２ａから呼び出され、ＯＳ切替え部５０４ａを呼び出す機能を有する。
【００５２】
処理表管理部７０３ａは、図５に示される処理表の保存、取得を行う第１の実施形態で述べた機能に加えて、図１５に示される割り込み処理表の保存、取得を行う機能を有する。割り込み処理表には割り込みの種別と、割り込みが発生した際にかけるフィルタの種類が記載される。例えば、割り込み種別がディスク読み込み完了割り込み、フィルタ種類が記録の場合には、ディスク割り込みが完了したことを記録しておくことを意味する。
【００５３】
処理判定部７０２ａは第１の実施形態で述べた機能に加えて、セキュア割り込みハンドラ部７０７から割り込みの種別を受け取り、掛けるフィルタを判定する機能を有する。このために、処理表管理部７０３ａから割り込み処理表を取得し、割り込み処理表の割り込み種別がセキュア割り込みハンドラ部７０７から受け取った割り込み種別と一致する項目を探す。一致する項目が見つかった場合には処理実行部７０５ａに対応するフィルタ種別と割り込み種別情報を渡してフィルタ処理を実行する。フィルタ処理完了後、セキュア割り込みハンドラ部７０７を呼び出す。一致する項目が見つからない場合には、フィルタ処理は行わずに再度セキュア割り込みハンドラ部７０７を呼び出す。すなわち一致する項目が見つからない場合には、割り込みを何もせずに通過させる。
【００５４】
処理実行部７０５ａは第１の実施形態で述べた機能に加えて、処理判定部７０２ａからフィルタ種別と割り込み種別情報を受け取り、対応するフィルタをかける機能を有する。例えばフィルタ種別として記録が指定された場合には割り込みの発生を記録媒体に記録する処理を行う。
【００５５】
ノンセキュア割り込みハンドラ部６０２はＯＳ切替え部５０４ａから呼び出され、割り込み処理を行う機能を有する。
【００５６】
図１６は第２の実施形態における割り込み発生時のフローの一例である。割り込みが発生した場合に（ステップＳ７０１）、割り込み制御部２０２は実行中の処理を中断し中断した処理の戻り先や処理の実行状態を保存したのち、トラップ部５０１ａを呼び出す（ステップＳ７０２）。トラップ部５０１ａはＯＳ切替え部５０４を呼び出し、ＯＳ切替え部５０４は実行を中断したＯＳの情報を保存する（ステップＳ７０３）。ＯＳ切替え部５０４は、中断したＯＳがノンセキュアＯＳ部６００であるか否かを判定する（ステップＳ７０４）。中断したＯＳがノンセキュアＯＳ部６００であると判定された場合（ステップＳ７０４：Ｙｅｓ）、コンテキスト保存復帰部５０５はノンセキュアＯＳのコンテキストを保存し（ステップＳ７０５）、セキュアＯＳのコンテキストを復帰する（ステップＳ７０６）。コンテキスト復帰後、セキュア割り込みハンドラ部７０７を呼び出す（ステップＳ７０７）。
【００５７】
一方、中断したＯＳがセキュアＯＳ部７００であれば、直接セキュアＯＳ部７００を呼び出す（ステップＳ７０７）。続いてセキュア割り込みハンドラ部７０７は割り込み種別を判定し（ステップＳ７０８）、処理判定部７０２ａを呼び出す。処理判定部７０２ａは処理表管理部７０３ａから割り込み処理表を取得し、処理表からセキュア割り込みハンドラ部７０７からステップＳ７０８で判定して受け取った割り込み種別が一致する処理があるかを判定して、一致した項目を取り出す（ステップＳ７０９）。一致する項目が見つかった場合には（ステップＳ７１０：Ｙｅｓ）、処理判定部７０２ａは割り込み種別と対応するフィルタ種別を渡して処理実行部７０５ａを呼び出し、処理実行部７０５ａは対応するフィルタ処理を実行する（ステップＳ７１１）。その後ステップＳ７１２に進む。
【００５８】
一致する項目が見つからなかった場合には（ステップＳ７１０：Ｎｏ）、ステップＳ７１２に進む。さらにセキュア割り込みハンドラ部７０７はモニタ部５００ｂのＯＳ切替え部５０４ａを呼び出した後、ＯＳ切替え部５０４ａはコンテキスト保存復帰部５０５を呼び出し、コンテキスト保存復帰部５０５はセキュアＯＳのコンテキストを保存する（ステップＳ７１３）。さらにコンテキスト保存復帰部５０５はノンセキュアＯＳのコンテキストを復帰し、ＯＳ切替え部５０４はノンセキュア割り込みハンドラ部７０７を呼び出す（ステップＳ７１４）。ノンセキュア割り込みハンドラで割り込み処理を行い、処理は完了となる（ステップＳ７１５）。
【００５９】
第２の実施形態におけるメモリアクセス検出時のフローは図８と同等である。また、起動時のフローについてもほぼ図７と同等であるが、ステップＳ１０７の割り込み入力先設定において割り込みの入力先をＯＳ部ではなく、モニタ部５００に設定する点のみが異なる。
【００６０】
以上により、データのリード・ライトを契機とするだけでなく、割り込みを契機としてフィルタ処理を行えるようになる。例えば、ディスク入力完了の割り込みを契機として入力したデータを一括して復号することや、パケット到着割り込みを監視して、通信状況を監視するといったことがノンセキュアＯＳ部６００の変更無しに、本実施形態により可能となる。またノンセキュアＯＳ部６００からはセキュアＯＳ部７００の内容を改竄することが不可能であるため、ノンセキュアＯＳ部６００の処理が完了された場合にもノンセキュアＯＳ側の完全性を保証しつつ、割り込みの監視などが可能となる。
【００６１】
（第３の実施形態）
第１の実施形態においては、ペリフェラルアクセスに対して単純なフィルタをかけることを想定していた。ネットワーク通信に対するフィルタ処理の中でも特に自動的に通信をＶＰＮ（Virtual  Private  Network）を介した通信に変換（カプセル化）するような場合は、ペリフェラルに対するデータにフィルタをかけるセキュアＯＳ部７００ｃ側の構成が複雑になる。例えばイーサネット（登録商標）によるネットワークを例として考えると、ＩＰパケットをＶＰＮによりＵＤＰレイヤでカプセル化する場合には、ノンセキュアＯＳ側で書き込んだパケットを解析し、ＭＡＣヘッダ、ＩＰヘッダ、ＵＤＰヘッダ、ＵＤＰボディに分割する。このとき本来の通信先ではなく、ＶＰＮサーバに対して通信を行う必要があるため、ＶＰＮサーバに対する通信のＭＡＣヘッダ、ＩＰヘッダ、ＵＤＰヘッダを作成し、その後に元の、すなわち本来の通信先に対応するＩＰヘッダ、ＵＤＰヘッダ、ＵＤＰボディを暗号化したものを付加する必要がある。
【００６２】
第３の実施形態では通信を自動的にＶＰＮを介した通信に変換する構成について構成の一例である図１７を用いて詳説する。図１７は図３とプロトコル解析部７１０、カプセル処理部７０９、暗号処理部７０８を備える点と、処理実行部７０５ｂの内部構成が異なる。
【００６３】
プロトコル解析部７１０は、リード・ライトを行うアクセス先のペリフェラルの物理アドレスとリード・ライト種別と、リード・ライト種別がライトの場合にはライト要求があったデータを受け取る。プロトコル解析部７１０はアクセス先の物理アドレスからパケット内の位置を算出する。例えば、ネットワークデバイスの送信バッファが物理アドレス０ｘ１０００００００から始まる場合、アクセス先が０ｘ１００００１００であれば、パケット内での位置は０ｘ１００となる。さらに、カプセル処理部７０９を呼出し、リード時にはカプセル化されたデータを渡してカプセル化除去、ライト時にはカプセル化したいデータを渡してカプセル化を行う機能を有する。例えば先述のＵＤＰによるＶＰＮの例では、ＭＡＣヘッダ以降のパケット全体（ＩＰヘッダ、ＵＤＰヘッダ、ＵＤＰボディ）を渡す。さらに、カプセル化されたパケット内での位置ではなく、カプセル除去されたパケット内の位置に対応するデータの読み書きを行う機能を有する。
【００６４】
カプセル処理部７０９はカプセル化されたデータのカプセル化除去、ライト時にはカプセル化されていないデータのカプセル化を行う機能を有する。カプセル化はまず、暗号処理部７０８を呼出しデータの暗号化を行う。その後、ヘッダとしてＶＰＮサーバに対する通信のヘッダを付与する。例えば、先述の例ではＭＡＣヘッダ、ＩＰヘッダおよびＵＤＰヘッダを付与する。一方カプセル化除去では、ＶＰＮサーバからの通信に対応するヘッダを除去し、暗号化処理部を呼出し、データの復号化を行う。さらに、カプセル処理部７０９はＵＤＰパケットのヘッダを書き換える機能を有する。これは実際に、ＶＰＮで通信を行うのが、ＶＰＮサーバであるため、実際のパケットにはＶＰＮサーバのアドレスを書き込んでおかなければならないためである。
【００６５】
暗号処理部７０８はカプセル処理部７０９から呼び出され、自身が記憶する鍵を用いてデータの暗号化、復号化を行う機能を有する。暗号処理部７０８からは暗号・復号の種別、暗号化もしくは複合化したいデータを受け取り、暗号化もしくは複合化したデータを返す。暗号化アルゴリズムとしてはＡＥＳ、ＤＥＳなど一般に知られたアルゴリズムを利用すればよい。
【００６６】
処理実行部７０５ｂはプロトコル解析部７１０に対してアクセス先物理アドレス、リード・ライトの種別、ライトの場合にはライトを行うデータを渡して、パケット送受信を要求する機能を有する。
【００６７】
図１８は第３の実施形態における処理表の一例である。送信、受信バッファがそれぞれあり、送信バッファはライト制限、受信バッファはリード制限が行われ、バッファの読み書きをトラップすることが出来る。その際に、送信バッファのデータは暗号化とカプセル化が実施され、受信バッファのデータは復号化とカプセル化解除が行われる。なお今回はリード、ライトどちらか片方を制限しているが、両方を制限しても良い。
【００６８】
図１９は第３の実施形態におけるフィルタ処理のフローを示した例である。フィルタ処理のみについて説明する。図８の点線部分が対応し、他の処理に関しては図８と同等である。まずフィルタ処理が開始すると、処理実行部７０５ｂはプロトコル解析部７１０を呼出し、プロトコル解析部７１０は与えられた物理アドレスからパケット内の位置を計算する（ステップＳ８０１）。さらにプロトコル解析部７１０は命令種別がリード・ライト命令のどちらであるかを判定する（ステップＳ８０２）。リード命令の場合には（ステップＳ８０２：リード）、プロトコル解析部７１０は読み込みバッファからパケットを取り出し（ステップＳ８０３）、カプセル処理部７０９に渡す。カプセル処理部７０９はＶＰＮサーバに対する通信のヘッダ部分を除去（カプセル化除去）する（ステップＳ８０４）。さらに暗号処理部７０８はデータの復号を行う（ステップＳ８０５）。さらにカプセル処理部７０９はヘッダを実際の通信元に書き換え（ステップＳ８０６）、リードするデータを決定して（ステップＳ８０７）、処理完了となる。
【００６９】
一方ライト命令の場合には（ステップＳ８０２：ライト）、プロトコル解析部７１０は書き込むデータがパケットの終端かどうかを判定する（ステップＳ８０８）。パケットの終端でない場合（ステップＳ８０８：Ｎｏ）、カプセル処理部７０９は、データを保存しておき（ステップＳ８１３）、処理終了とする。
【００７０】
一方、終端であれば（ステップＳ８０８：Ｙｅｓ）、カプセル化を実行するため、まずヘッダをカプセル処理部７０９はＶＰＮサーバのものに書き換える（ステップＳ８０９）。さらに暗号化を暗号処理部７０８が行い（ステップＳ８１０）、カプセル処理部７０９はＶＰＮサーバに対して通信するためのヘッダを付与して、カプセル化を行う（ステップＳ８１１）。さらに、カプセル処理部７０９は送信バッファへの実際の書き込み（データライト）を行い（ステップＳ８１２）、処理完了となる。
【００７１】
（第４の実施形態）
第４の実施形態はストレージを暗号化するための構成である。図２０は第４の実施形態における情報処理装置１の内部構成の一例である。以降では図２０を用いて第４の実施形態の情報処理装置１について説明する。図２０の構成は図３の構成と位置解析部７１２と暗号処理部７１１を設ける点、処理実行部７０５ｃが有する機能が異なる。
【００７２】
位置解析部７１２はストレージに対する命令レジスタへのアクセス時にストレージアクセス命令を解析し、アクセス先のストレージ上での位置を得る機能を有する。ストレージアクセス命令の内容は処理実行部７０５ｃから書き込むデータとして与えられる。さらに、位置解析部７１２はアクセス命令のリード・ライト種別を解析し、リード命令であれば読み込んだデータを復号化、ライト命令であれば書き込むデータを暗号化するために暗号処理部７０８に暗号化もしくは復号化したいデータおよび、ディスク上での位置、暗号化・復号化の種別、機能を有する。
【００７３】
暗号処理部７１１は位置解析部７１２からストレージ上での位置、データと暗号化・復号化の種別を与えられて呼び出され、与えられたデータの暗号化、復号化する機能を有する。なお、ストレージ上の位置で暗号化、復号化に用いるパラメータを変えてもよい。
【００７４】
処理実行部７０５ｃはストレージに対する命令レジスタへのアクセス時に位置解析部７１２に対して命令解析を要求する機能を有する。アクセス先物理アドレス、書き込むデータを渡して呼び出す。処理表管理部７０３が記憶する表は図２１のようになる。ストレージに対する命令を格納するレジスタの書き込みを監視する。
【００７５】
図２２は第４の実施形態におけるフィルタ処理の詳細フローである。図２２は図８の点線部分を抜き出したものであり、それ以外の処理は図８と同等である。まず、位置解析部７１２はアクセス命令がリード・ライトどちらであるかを判定する（ステップＳ９０２）。リードの場合（ステップＳ９０２：リード）、位置解析部７１２はアクセス先ストレージ上での位置を決定し、復号処理部は復号用パラメータを決定する（ステップＳ９０３）。さらに、処理実行部７０５ｃはセキュアデバイスアクセス部７０６を介してデータを読み込み（ステップＳ９０４）、データを復号して（ステップＳ９０５）、処理完了となる。
【００７６】
一方、ライトの場合（ステップＳ９０２：ライト）、位置解析部７１２はアクセス先ストレージ上での位置を決定し、暗号処理部７０８は復号用パラメータを決定する（ステップＳ９０８）。さらに、暗号処理部７０８は暗号化し（ステップＳ９０９）、処理実行部７０５はセキュアデバイスアクセス部７０６を介してデータを書き込み（ステップＳ９１０）、処理完了となる。
【００７７】
（第５の実施形態）
第４の実施形態までは単一のペリフェラルを用いて暗号化処理などのフィルタ処理を行うことを前提としていた。ペリフェラルアクセスを別種のペリフェラルアクセスに変換するような場面も考えられる。例えば、ローカルストレージアクセスをネットワーク上のサーバに対するアクセスに変換すれば、ノンセキュアＯＳ部６００はローカルのストレージにアクセスする通常のデバイスドライバだけを有すれば、ネットワーク上のサーバ上のストレージに対する透過的なアクセスが可能になる。第５の実施形態によれば、ノンセキュアＯＳ部６００に対してネットワーク上のサーバのストレージをローカルのストレージと見せかけることが可能となる。なお、本実施形態はストレージとネットワークアクセスを変換する例について述べているがこの限りではなく、変換元ペリフェラルへのアクセス要求を分析し、変換先のペリフェラルへのアクセス要求に変換する本構成と同等の構成を採ることによりペリフェラルアクセスを別種のペリフェラルアクセスに変換することが可能となる。
【００７８】
第５の実施形態における情報処理装置１の内部構成の一例を図２３に示し、以降は本図に沿って第５の実施形態について説明する。図２３は図３とパケット生成・解析部７１４、位置解析部７１３を備える点が異なる。また、処理実行部７０５ｄが有する機能が異なる。
【００７９】
位置解析部７１３はストレージに対する命令レジスタへのアクセス時に処理実行部７０５から呼び出され、ストレージアクセス命令を解析し、アクセス先のストレージ上での位置を得る機能を有する。ストレージアクセス命令の内容は処理実行部７０５から書き込むデータとして与えられる。さらに、位置解析部７１２はアクセス命令のリード・ライト種別を解析する機能を有する。分析したアクセス命令の種別とストレージ上での位置を処理実行部７０５ｄに返す。
【００８０】
パケット生成・解析部７１４はネットワークに送出するパケットの生成やネットワークから受信したパケットの解析を行う機能を有する。パケット生成・解析部７１４は処理実行部７０５ｄから呼び出される際に命令種別を受け取る。この命令種別にはサーバ上のデータのリード要求パケットの生成、サーバ上のデータのライト要求パケットの生成、サーバ上から受信したリード要求に対する返答パケットの分析の最低三種類がある。命令がサーバ上のデータのリード要求パケットの生成の場合には、パケット生成・解析部７１４はパケットの生成時にストレージ内での位置をサーバ上での位置に変換し、リード要求パケットを生成する。このパケットにサーバ上での位置情報が含まれる。また、サーバ上のデータのライト要求パケットの場合には、ライト要求パケットを生成するが、パケットにはライト命令、ライトするデータのサーバ上での位置情報、ライトするデータが含まれる。サーバ上から受信したリード要求に対する返答パケットの分析時にはパケットを受け取り、リードしたサーバ上のデータの分析を行う。いずれの命令もパケットの生成結果や分析結果は、処理実行部７０５ｄに渡す。
【００８１】
処理実行部７０５ｄはストレージアクセス要求時にまず位置解析部７１３を呼出し、ストレージに対する命令の解析を行う。その結果としてストレージアクセス命令のリード・ライトの種別とストレージ内でのデータの位置を受け取る。リード要求の場合には、位置解析部７１３はパケット生成・解析部７１４を呼出し、サーバ上でのデータリード用パケットの生成を行う。さらに、受け取ったパケットをセキュアデバイスアクセス部７０６に渡してネットワークに送出する。その後、サーバからリード要求に対する返答パケットを受け取り、パケット生成・解析部７１４に解析命令とともに渡す。その結果としてストレージデータを受け取り、処理判定部７０２に返す。一方、ライト要求の場合には、パケット生成・解析部７１４に書き込むデータと位置情報を渡して、サーバ上でのデータライト用パケットの生成を行う。その結果としてパケットを受け取りセキュアデバイスアクセス部７０６に渡してネットワークにライト要求を送出する機能を有する。サーバ上のデータのリード・ライト要求に用いるプロトコルとしては、ＷｅｂＤＡＶやＦＴＰ、ＷｅｂＳｏｃｋｅｔなど一般に知られたプロトコルを利用すればよい。
【００８２】
ストレージの命令格納用レジスタアクセスを監視する必要があるため、処理表は図２４のようになる。図２５は第５の実施形態におけるフィルタ処理の詳細フローである。図２２は図８の点線部分を抜き出したものであり、それ以外の処理は図８と同等である。
【００８３】
まず、処理実行部７０５ｄは位置解析部７１３を呼出し、位置解析部７１３はアクセス要求のあった命令を解析し、リード・ライトの種別、ストレージ上での位置を得る（ステップＳ１００１）。そして、位置解析部７１３は、処理の方向種別を判定する（ステップＳ１００２）。リード・ライトの種別がリードの場合には（ステップＳ１００２：リード）、処理実行部７０５ｄはパケット生成・解析部７１４にデータリードパケットの生成を命令し、パケット生成・解析部７１４はサーバ上での位置を含むデータリード要求のパケットを生成する（ステップＳ１００３）。さらに、処理実行部７０５は生成したパケットを受け取り、セキュアデバイスアクセス部７０６を介してネットワークに送出する（ステップＳ１００４）。さらにセキュアデバイスアクセス部７０６は送出したパケットの返答として、リード結果を受け取り、処理実行部７０５はパケット生成・解析部７１４を呼び出してパケットの解析を行い、リードしたデータを受け取る（ステップＳ１００５）。一方、リード・ライト種別がライトの場合には（ステップＳ１００２：ライト）、処理実行部７０５ｄはパケット生成・解析部７１４にデータライトパケットの生成を命令し、パケット生成・解析部７１４はサーバ上での位置とライトするデータを含むデータライト要求のパケットを生成する（ステップＳ１００６）。さらに、処理実行部７０５ｄは生成したパケットを受け取り、セキュアデバイスアクセス部７０６を介してネットワークに送出する（ステップＳ１００７）。
【００８４】
以上の実施形態により、ペリフェラルアクセスを別種のペリフェラルへのアクセスに変換することが可能となる。
【００８５】
（第６の実施形態）
第１の実施形態ではノンセキュアＯＳ部６００のノンセキュアデバイスアクセス部６０１の実装形態であるデバイスドライバがフィルタ機構の存在を意識せずに実装できることを目的としていた。すなわち、モニタ部５００やセキュアＯＳ部７００がない場合にはノンセキュアデバイスアクセス部６０１はそのままペリフェラル部４００のデバイスドライバとして利用できる。これはノンセキュアＯＳ部６００のノンセキュアデバイスアクセス部６０１を透過的に実装することができるという利点がある一方で、モニタ部５００やセキュアＯＳ部７００の機能が肥大化するという欠点がある。そこでノンセキュアデバイスアクセス部６０１がペリフェラルへのアクセス時にモニタ部５００を明示的に呼び出すようにすると、ペリフェラルアクセスをトラップする必要がなくなるため、モニタ部５００の機能を簡略化できる。第６の実施形態は、ノンセキュアデバイスアクセス部６０１がモニタ部５００を明示的に呼び出し、フィルタを掛ける一構成例である。以降第５６の実施形態における情報処理装置１の構成を示す図２６を用いて説明する。
【００８６】
図２６に示す第６の実施形態における情報処理装置１は図３とノンセキュアＯＳ部６００ｂがモニタ呼び出し部６０３を備える点とノンセキュアデバイスアクセス部６０１ｂの機能、モニタ部５００のＯＳ切替え部５０４ｃ、トラップ部５０１ｃ、命令解析部５０２ｃの機能が異なる。
【００８７】
モニタ呼び出し部６０３はノンセキュアデバイスアクセス部６０１ｂから呼び出され、ＯＳ切替え部５０４ｃを呼び出す機能を有する。ノンセキュアデバイスアクセス部６０１ｂからはアクセス先のペリフェラルの仮想アドレス、リード・ライトの種別、ライトの場合には書き込む値が渡される。ＯＳ切替え部５０４ｃにはアクセス先のペリフェラルの仮想アドレス、リード・ライトの種別、ライトの場合には書き込む値が渡し、その結果としてＯＳ切替え部５０４ｃからはリードの場合には読み込んだ値が渡され、その値をノンセキュアデバイスアクセス部６０１ｂに返す。
【００８８】
ノンセキュアデバイスアクセス部６０１はペリフェラルへのアクセス時にモニタ呼び出し部６０３を呼び出す機能を有する。モニタ呼び出し部６０３に対してはペリフェラルの仮想アドレス、リード・ライトの種別、ライトの場合には書き込む値を渡し、その結果としてリードの場合には読み込んだ値が渡される。
【００８９】
ＯＳ切替え部５０４ｃは第１の実施形態ではトラップ部５０１ｃ及びエントリ部７０１から呼び出されていたが、本実施形態ではエントリ部７０１及びモニタ呼び出し部６０３から呼び出される。モニタ呼び出し部６０３からは仮想アドレス、リード・ライトの種別、ライトの場合には書き込む値を渡され、命令解析部５０２ｃに渡す。さらに命令解析部５０２ｃからは解析結果として仮想アドレスに対応する物理アドレスとリード・ライトの種別、ライトの場合には書き込む値を渡される。さらに、コンテキスト保存復帰部５０５にノンセキュアＯＳのコンテキスト保存を命令した後、コンテキスト保存復帰部５０５にセキュアＯＳのコンテキスト復帰を命令する。その後、セキュアＯＳ部７００のエントリ部７０１を呼び出す。
【００９０】
トラップ部５０１ｃはメモリ保護部２０１から呼び出された場合にノンセキュアＯＳ部６００に対してエラーを返す機能を有する。このためにノンセキュアＯＳのベクタテーブルのアドレスを取得後、データアボートを処理するハンドラを決定し、ノンセキュアＯＳのデータアボートハンドラにジャンプする。これはノンセキュアＯＳ部６００からの直接のペリフェラル呼び出しが本実施形態では許されないためである。本実施形態では、アボートハンドラにジャンプするが、単にエラーを出力するのみでも良い。
【００９１】
命令解析部５０２ｃは仮想アドレス、リード・ライトの種別、ライトの場合には書き込む値を渡され、アドレス変換部５０３に対して渡されたペリフェラルの仮想アドレスを渡して物理メモリへの変換を命令する。さらにその結果としてアドレス変換部５０３から物理アドレスを受け取り、ＯＳ切替え部５０４ｃに返す機能を有する。
【００９２】
アドレス変換部５０３やセキュアＯＳ部７００の構成は第１の実施形態における構成と同等である。
【００９３】
図２７は第６の実施形態におけるモニタ呼出し時の処理フローである。ペリフェラルにアクセスする際に、ノンセキュアデバイスアクセス部６０１はモニタ呼出し部に対してアクセス先データ仮想アドレス、命令のリード・ライト種別、書き込みの場合には書き込むデータを渡して、ペリフェラルへのアクセスを命令する（ステップＳ１１０１）。モニタ呼出し部６０３はＯＳ切替え部５０４ｃにノンセキュアデバイスアクセス部６０１から受け取ったアクセス先データ仮想アドレス、命令のリード・ライト種別、書き込みの場合には書き込むデータを渡して呼び出す（ステップＳ１１０２）。
【００９４】
ＯＳ切替え部５０４ｃは命令解析部５０２ｃに対してアクセス先データ仮想アドレス、命令のリード・ライト種別、書き込みの場合には書き込むデータを渡して解析を命令し、命令解析部５０２ｃは受け取ったアクセス先データ仮想アドレスをアドレス変換部５０３に渡す。アドレス変換部５０３はアクセス先の仮想アドレスを取得し（ステップＳ１１０３）、ノンセキュアＯＳページテーブルアドレスレジスタを参照し、ページテーブルのアドレスを特定したのち、そのページテーブルを参照して物理アドレスへの変換を行う（ステップＳ１１０４）。
【００９５】
さらに、ＯＳ切替え部５０４ｃはコンテキスト保存復帰部５０５を呼び出し、コンテキスト保存復帰部５０５はノンセキュアＯＳのコンテキストを保存する（ステップＳ１１０５）。その後、コンテキスト保存復帰部５０５はセキュアＯＳのコンテキストを復帰する（ステップＳ１１０６）。
【００９６】
その後、ＯＳ切替え部５０４ｃはエントリ部７０１にアクセス先データの物理アドレスと、リード・ライト種別、書き込みの場合は書き込むデータを渡す（ステップＳ１１０７）。以降のノンセキュアＯＳのコンテキスト復帰までステップＳ１１０８からＳ１１１６までの処理は、第１の実施形態におけるフローと同等である。すなわち、セキュアＯＳ部７００の構成は第１の実施形態と同等である。ノンセキュアＯＳのコンテキスト復帰後、ＯＳ切替え部５０４ｃはリード・ライト種別の判定を行い（ステップＳ１１１７）、ライト命令の場合（ステップＳ１１１７：ライト）にはモニタ呼び出し部６０３のモニタ呼び出し命令の次の命令に戻り（ステップＳ１１１９）、処理完了となる。一方リード命令の場合には（ステップＳ１１１７：リード）、モニタ呼び出し部６０３に読み込んだデータを渡してモニタ呼び出し命令の次の命令に戻り（ステップＳ１１１８）、処理完了となる。
【００９７】
図２８は、第６の実施形態におけるアボート発生時の処理フローである。アクセスが禁止されたペリフェラルへのアクセス時には、メモリ保護部２０１がトラップ部５０１ｃを呼び出し、トラップ部５０１ｃはエラーを表示し（ステップＳ１２０１）、処理完了となる。図２９はアボート発生時の処理の変形の例で、単にエラーを表示するのではなく、ノンセキュアＯＳ部６００ｂのアボートハンドラにジャンプする。そのために、まずトラップ部５０１ｃはノンセキュアベクタテーブルアドレスを取得し（ステップＳ１２０２）、データアボートハンドラのアドレスを決定する（ステップＳ１２０３）。さらにトラップ部５０１ｃは取得したアドレスにジャンプし、データアボートハンドラを呼び出す（ステップＳ１２０４）。
【００９８】
本構成ではモニタ部５００のアドレス変換部５０３が仮想アドレスから物理アドレスへの変換を行っているが、ノンセキュアＯＳ部６００のモニタ呼び出し部６０３が変換を行っても良い。その場合にはアドレス変換部５０３は必須の構成ではなくなる。本構成のように、ノンセキュアデバイスアクセス部６０１がペリフェラルへのアクセス時にモニタ部５００を明示的に呼び出すようにすると、ペリフェラルアクセスをトラップする必要がなくなるため、モニタ部５００の機能を簡略化できる。
【００９９】
なお、この発明は上記した実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を種々変形して具体化することができる。また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構成要素を適宜組み合わせても良いものである。
【符号の説明】
【０１００】
１  情報処理装置
１００  ストレージ部
２００  ＣＰＵ部
２０１  メモリ保護部
２０２  割込み制御部
３００  主記憶部
３０１  コンテキスト待避部
４００  ペリフェラル部
５００  モニタ部
５０１  トラップ部
５０２  命令解析部
５０３  アドレス変換部
５０４  ＯＳ切換え部
５０５  コンテキスト保存復帰部
５０６  イベント検知部
５０７  処理設定部
６００  ノンセキュアＯＳ部
６０１  ノンセキュアデバイスアクセス部
６０２  ノンセキュア割込みハンドラ部
６０３  モニタ呼び出し部
７００  セキュアＯＳ部
７０１  エントリ部
７０２  処理判定部
７０３  処理表管理部
７０４  メモリ保護設定部
７０５  処理実行部
７０６  セキュアデバイスアクセス部
７０７  セキュア割込みハンドラ部
７０８  暗号処理部
７０９  カプセル処理部
７１０  プロトコル解析部
７１１  暗号処理部
７１２  位置解析部
７１３  位置解析部
７１４  パケット生成・解析部
【図１】
2015060569.tif 000003
【図２】
2015060569.tif 000004
【図３】
2015060569.tif 000005
【図４】
2015060569.tif 000006
【図５】
2015060569.tif 000007
【図６】
2015060569.tif 000008
【図７】
2015060569.tif 000009
【図８】
2015060569.tif 000010
【図９】
2015060569.tif 000011
【図１０】
2015060569.tif 000012
【図１１】
2015060569.tif 000013
【図１２】
2015060569.tif 000014
【図１３】
2015060569.tif 000015
【図１４】
2015060569.tif 000016
【図１５】
2015060569.tif 000017
【図１６】
2015060569.tif 000018
【図１７】
2015060569.tif 000019
【図１８】
2015060569.tif 000020
【図１９】
2015060569.tif 000021
【図２０】
2015060569.tif 000022
【図２１】
2015060569.tif 000023
【図２２】
2015060569.tif 000024
【図２３】
2015060569.tif 000025
【図２４】
2015060569.tif 000026
【図２５】
2015060569.tif 000027
【図２６】
2015060569.tif 000028
【図２７】
2015060569.tif 000029
【図２８】
2015060569.tif 000030
【図２９】
2015060569.tif 000031