(57)【要約】  【課題】  メモリへアクセスする場合に、実行対象のプログラムが実行される前に改竄されることを未然に防止することができ、メモリのアクセス帯域を圧迫することがない情報処理装置、情報処理方法及びコンピュータプログラムを提供する。  【解決手段】  プログラムを実行することが可能な主演算処理部及び副演算処理部、実行対象プログラムを展開するメモリを備え、該メモリに記憶してある情報に対する処理の制限を示す処理制限情報を記憶手段に記憶してあり、副演算処理部は、実行対象となるプログラムに改竄が行われているか否かを判断し、改竄が行われていないと判断した場合、実行対象となるプログラムをメモリに展開し、メモリに展開したプログラムの実行前に処理制限情報を参照し、メモリに記憶してある情報に対する主演算処理部による処理が、処理制限情報に記憶してある処理と合致すると判断した場合、主演算処理部のプログラムの実行を禁止する。【選択図】      図４
2006323675.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行することが可能な主演算処理部及び副演算処理部と、実行対象プログラムを展開するメモリとを備え、該メモリに展開してあるプログラムに対する処理の制限を示す処理制限情報を記憶手段に記憶する情報処理装置であって、
前記副演算処理部は、
実行対象となるプログラムに改竄が行われているか否かを判断する手段と、
改竄が行われていないと判断した場合、実行対象となるプログラムを前記メモリに展開する手段と、
前記メモリに展開したプログラムの実行前に、前記処理制限情報を参照し、前記メモリに展開してあるプログラムに対する前記主演算処理部による処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断する手段と、
該手段で合致すると判断した場合、前記主演算処理部の前記プログラムの実行を禁止する手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記主演算処理部は、メモリに対する読み書きを制御するアドレス制御手段を備えており、
前記副演算処理部は、前記アドレス制御手段が指示するアドレス範囲に記憶してある情報に対する処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断するようにしてあることを特徴とする請求項１記載の情報処理装置。
【請求項３】
実行対象のプログラムを記憶又は更新する場合、該プログラムの改竄が行われていないと判断したときに、前記副演算処理部のみが取得可能な情報を付加して記憶又は更新する手段を備えることを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
プログラムを実行することが可能な主演算処理部及び副演算処理部と、実行対象プログラムを展開するメモリとを備え、該メモリに展開してあるプログラムに対する処理の制限を示す処理制限情報を記憶手段に記憶するコンピュータを用いる情報処理方法であって、
前記副演算処理部は、
実行対象となるプログラムに改竄が行われているか否かを判断し、
改竄が行われていないと判断した場合、実行対象となるプログラムを前記メモリに展開し、
前記メモリに展開したプログラムの実行前に、前記処理制限情報を参照し、前記メモリに展開してあるプログラムに対する前記主演算処理部による処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断し、
合致すると判断した場合、前記主演算処理部の前記プログラムの実行を禁止することを特徴とする情報処理方法。
【請求項５】
前記主演算処理部は、メモリに対する読み書きを制御し、
前記副演算処理部は、前記主演算処理部が指示するアドレス範囲に記憶してある情報に対する処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断することを特徴とする請求項４記載の情報処理方法。
【請求項６】
実行対象のプログラムを記憶又は更新する場合、該プログラムの改竄が行われていないと判断したときに、前記副演算処理部のみが取得可能な情報を付加して記憶又は更新することを特徴とする請求項４又は５記載の情報処理方法。
【請求項７】
プログラムを実行することが可能な主演算処理部及び副演算処理部と、実行対象プログラムを展開するメモリとを備え、該メモリに展開してあるプログラムに対する処理の制限を示す処理制限情報を記憶手段に記憶するコンピュータで実行することが可能なコンピュータプログラムであって、
前記副演算処理部を、
実行対象となるプログラムに改竄が行われているか否かを判断する手段、
改竄が行われていないと判断した場合、実行対象となるプログラムを前記メモリに展開する手段、
前記メモリに展開したプログラムの実行前に、前記処理制限情報を参照し、前記メモリに展開してあるプログラムに対する前記主演算処理部による処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断する手段、及び
該手段で合致すると判断した場合、前記主演算処理部の前記プログラムの実行を禁止する手段
として機能させることを特徴とするコンピュータプログラム。
【請求項８】
前記主演算処理部を、
メモリに対する読み書きを制御するアドレス制御手段
として機能させ、
前記副演算処理部を、
前記アドレス制御手段が指示するアドレス範囲に記憶してある情報に対する処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断する手段
として機能させることを特徴とする請求項７記載のコンピュータプログラム。
【請求項９】
前記副演算処理部を、
実行対象のプログラムを記憶又は更新する場合、該プログラムの改竄が行われていないと判断したときに、前記副演算処理部のみが取得可能な情報を付加して記憶又は更新する手段
として機能させることを特徴とする請求項７又は８記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに対する第三者による改竄を検知することができる情報処理装置及び情報処理方法に関する。特にオペレーティングシステムに対する第三者による改竄を検知することができる情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、ワークステーション、パーソナルコンピュータ等のセキュリティを確保するために、動作するプログラム、操作するユーザ等に権限を設定し、設定した権限の範囲内での動作、操作等のみを許可するようにしていた。権限の設定によりセキュリティを確保する方法では、オペレーティングシステムが権限の設定、監視等を実行する。したがって、オペレーティングシステムが正常に動作することが前提条件となっていた。
【０００３】
プログラムの改竄を防止する方法に限定した場合、例えばプログラムがメモリにロードされる都度、プログラムをランダムにメモリに配置することによりメモリ解析を困難にする方法も良く用いられる。この方法では、プログラムの実行中に、他のプログラムからメモリ解析することを困難にすることによりプログラム改竄の危険度を下げることができる。また、プログラムが展開されたメモリを定期的に監視し、メモリのプログラム記憶領域に変更があった場合にはプログラムの実行を停止することにより、プログラムの改竄を検知することも可能となる。
【０００４】
また、プログラムのアクセス違反を検知するハードウェアであるアクセス監視装置を別個に設けておき、メモリに出力される信号を監視することにより、アクセス違反を検知する方法も開発されている（特許文献１参照）。この場合、実行中のプログラムを識別する情報はオペレーティングシステムが管理しており、プログラムを識別する情報に基づいて、ハードウェアであるアクセス監視装置が、プログラムによるメモリへのアクセスが不正であるか否かを判断する。
【特許文献１】特開２００１−３２５１５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、プログラムの権限を監視するオペレーティングシステムもプログラムの１つであり、例えばリナックス（Linux ）のようにカーネルモジュールも更新することが可能なオペレーティングシステムでは、権限の設定方法、監視方法等も更新することができる。したがって、オペレーティングシステム自体を改竄することにより、権限の監視を無効化し、不正なメモリアクセスを行う可能性が残されているという問題点があった。
【０００６】
また、プログラムをランダムにメモリに配置することによりメモリ解析を困難にする方法では、メモリ内容の監視間隔を短くするほどプログラムの改竄を早期に発見することができるものの、監視間隔を短くすることは、メモリアクセスの帯域を監視プログラムが用いることによる性能低下の一因となる。さらに、監視間隔を如何に短くしようと改竄された後の状態を検知するに過ぎず、改竄されることを未然に防止することができないという問題点があった。
【０００７】
さらに、プログラムのアクセス違反を検知するハードウェアであるアクセス監視装置を別個に設ける方法では、実行中のプログラムを識別する情報を管理するのはオペレーティングシステムであることから、オペレーティングシステム自体が改竄された場合、アクセス監視装置の動作を制御することができる可能性が残されているという問題点があった。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、プログラムが実行される前にメモリ内容が改竄されることを未然に防止することができ、メモリアクセスの帯域を圧迫することがない情報処理装置、情報処理方法及びコンピュータプログラムを提供することを目的とする。
【０００９】
また本発明は、メモリへアクセスする場合、プログラムが実行される前に改竄されることを未然に防止することができ、メモリアクセスの帯域を圧迫することがない情報処理装置、情報処理方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために第１発明に係る情報処理装置は、プログラムを実行することが可能な主演算処理部及び副演算処理部と、実行対象プログラムを展開するメモリとを備え、該メモリに展開してあるプログラムに対する処理の制限を示す処理制限情報を記憶手段に記憶する情報処理装置であって、前記副演算処理部は、実行対象となるプログラムに改竄が行われているか否かを判断する手段と、改竄が行われていないと判断した場合、実行対象となるプログラムを前記メモリに展開する手段と、前記メモリに展開したプログラムの実行前に、前記処理制限情報を参照し、前記メモリに展開してあるプログラムに対する前記主演算処理部による処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断する手段と、該手段で合致すると判断した場合、前記主演算処理部の前記プログラムの実行を禁止する手段とを備えることを特徴とする。
【００１１】
また、第２発明に係る情報処理装置は、第１発明において、前記主演算処理部は、メモリに対する読み書きを制御するアドレス制御手段を備えており、前記副演算処理部は、前記アドレス制御手段が指示するアドレス範囲に記憶してある情報に対する処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断するようにしてあることを特徴とする。
【００１２】
また、第３発明に係る情報処理装置は、第１又は第２発明において、実行対象のプログラムを記憶又は更新する場合、該プログラムの改竄が行われていないと判断したときに、前記副演算処理部のみが取得可能な情報を付加して記憶又は更新する手段を備えることを特徴とする。
【００１３】
また、第４発明に係る情報処理方法は、プログラムを実行することが可能な主演算処理部及び副演算処理部と、実行対象プログラムを展開するメモリとを備え、該メモリに展開してあるプログラムに対する処理の制限を示す処理制限情報を記憶手段に記憶するコンピュータを用いる情報処理方法であって、前記副演算処理部は、実行対象となるプログラムに改竄が行われているか否かを判断し、改竄が行われていないと判断した場合、実行対象となるプログラムを前記メモリに展開し、前記メモリに展開したプログラムの実行前に、前記処理制限情報を参照し、前記メモリに展開してあるプログラムに対する前記主演算処理部による処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断し、合致すると判断した場合、前記主演算処理部の前記プログラムの実行を禁止することを特徴とする。
【００１４】
また、第５発明に係る情報処理方法は、第４発明において、前記主演算処理部は、メモリに対する読み書きを制御し、前記副演算処理部は、前記主演算処理部が指示するアドレス範囲に記憶してある情報に対する処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断することを特徴とする。
【００１５】
また、第６発明に係る情報処理方法は、第４又は第５発明において、実行対象のプログラムを記憶又は更新する場合、該プログラムの改竄が行われていないと判断したときに、前記副演算処理部のみが取得可能な情報を付加して記憶又は更新することを特徴とする。
【００１６】
また、第７発明に係るコンピュータプログラムは、プログラムを実行することが可能な主演算処理部及び副演算処理部と、実行対象プログラムを展開するメモリとを備え、該メモリに展開してあるプログラムに対する処理の制限を示す処理制限情報を記憶手段に記憶するコンピュータで実行することが可能なコンピュータプログラムであって、前記副演算処理部を、実行対象となるプログラムに改竄が行われているか否かを判断する手段、改竄が行われていないと判断した場合、実行対象となるプログラムを前記メモリに展開する手段、前記メモリに展開したプログラムの実行前に、前記処理制限情報を参照し、前記メモリに展開してあるプログラムに対する前記主演算処理部による処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断する手段、及び該手段で合致すると判断した場合、前記主演算処理部の前記プログラムの実行を禁止する手段として機能させることを特徴とする。
【００１７】
また、第８発明に係るコンピュータプログラムは、第７発明において、前記主演算処理部を、メモリに対する読み書きを制御するアドレス制御手段として機能させ、前記副演算処理部を、前記アドレス制御手段が指示するアドレス範囲に記憶してある情報に対する処理が、前記処理制限情報に記憶してある処理と合致するか否かを判断する手段として機能させることを特徴とする。
【００１８】
また、第９発明に係るコンピュータプログラムは、第７又は第８発明において、前記副演算処理部を、実行対象のプログラムを記憶又は更新する場合、該プログラムの改竄が行われていないと判断したときに、前記副演算処理部のみが取得可能な情報を付加して記憶又は更新する手段として機能させることを特徴とする。
【００１９】
第１発明、第４発明及び第７発明では、プログラムを実行することが可能な主演算処理部及び副演算処理部を備え、メモリに記憶してある情報に対する処理の制限を示す処理制限情報を記憶してあるコンピュータを用い、副演算処理部は、実行対象となるプログラムに改竄が行われているか否かを判断し、改竄が行われていないと判断した場合、実行対象となるプログラムをメモリに展開する。副演算処理部は、メモリに展開したプログラムの実行前に記憶してある処理制限情報を参照して、メモリに展開してあるプログラムに対する主演算処理部による処理が、処理制限情報に記憶してある処理と合致するか否かを判断し、合致すると判断した場合、主演算処理部のプログラムの実行を禁止する。これにより、プログラムを実行する主演算処理部とは別個に設けてある副演算処理部が、プログラムの改竄の有無を判断することにより、オペレーティングシステムの管理外でプログラムの改竄を確認することができる。つまり、オペレーティングシステムが動作する前に処理制限情報を設定するため、オペレーティングシステムに対する改竄を未然に防止することが可能となる。さらに、プログラムを実行する都度、処理制限情報に基づくプログラム実行禁止処理の存在の有無を確認することにより、一定間隔でメモリ監視を定期的に実行する必要がなく、メモリへのアクセス帯域を圧迫することなく、計算機資源を有効に活用することが可能となる。なお、本明細書における「プログラム」とは、ロードモジュール等の実行可能プログラムだけでなく、該実行可能プログラムが読み書き可能なデータを含む概念である。
【００２０】
第２発明、第５発明及び第８発明では、主演算処理部は、メモリのアドレスを制御し、副演算処理部は、動的に指示されたアドレス範囲に記憶してある情報に対する処理が、処理制限情報に記憶してある処理と合致するか否かを判断する。これにより、副演算処理部は、ＤＭＡにより割当てられたメモリ領域に対する処理が、処理制限情報に記憶してある処理と合致するか否かを判断することにより、オペレーティングシステムの管理外でプログラム改竄の有無を判断することができる。つまり、オペレーティングシステムが動作する前に処理制限商法を設定するため、オペレーティングシステムに対する改竄が行われたか否かを確認することができる。したがって、オペレーティングシステムに対する改竄により不正アクセスを行うことを未然に防止することが可能となる。
【００２１】
第３発明、第６発明及び第９発明では、実行対象のプログラムが改竄されていないと判断することができるように、プログラムを記憶又は更新する場合、副演算処理部のみが取得可能な情報を付加して記憶又は更新する。これにより、実行対象のプログラムのメモリ展開時の改竄確認を確実に行うことができ、プログラム実行の安全度がより高まることが期待できる。
【発明の効果】
【００２２】
第１発明、第４発明及び第７発明によれば、プログラムを実行する主演算処理部とは別個に設けてある副演算処理部が、プログラムの改竄の有無を判断することにより、オペレーティングシステムの管理外でプログラムの改竄を確認することができる。つまり、オペレーティングシステムが動作する前に処理制限情報を設定するため、オペレーティングシステムに対する改竄を未然に防止することが可能となる。さらに、プログラムを実行する都度、処理制限情報に基づくプログラム実行禁止処理の存在の有無を確認することにより、一定間隔でメモリ監視を定期的に実行する必要がなく、メモリへのアクセス帯域を圧迫することなく、計算機資源を有効に活用することが可能となる。
【００２３】
第２発明、第５発明及び第８発明によれば、副演算処理部は、ＤＭＡにより割当てられたメモリ領域に対する処理が、処理制限情報に記憶してある処理と合致するか否かを判断することにより、オペレーティングシステムの管理外でプログラム改竄の有無を判断することができる。つまり、オペレーティングシステムが動作する前に処理制限情報を設定するため、オペレーティングシステムに対する改竄が行われたか否かを確認することができる。したがって、オペレーティングシステムに対する改竄により不正アクセスを行うことを未然に防止することが可能となる。
【００２４】
第３発明、第６発明及び第９発明によれば、実行対象のプログラムが改竄されていないと判断することができるように、プログラムを記憶又は更新する場合、副演算処理部のみが取得可能な情報を付加して記憶又は更新することで、実行対象のプログラムのメモリ展開時の改竄確認を確実に行うことができ、プログラム実行の安全度がより高まることが期待できる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
【００２６】
（実施の形態１）
図１は、本発明の実施の形態１に係る情報処理装置の構成を示すブロック図である。実施の形態１に係る情報処理装置は、主演算処理部１及び副演算処理部２を同一筐体内に備えており、主演算処理部１と副演算処理部２とは、内部バス３０を介してデータを送受信することが可能に接続されている。主演算処理部１及び副演算処理部２は、内部バス３０を介して、入力手段３及び出力手段４とも接続されている。
【００２７】
主演算処理部１は、少なくとも主ＣＰＵ１１、記憶手段１２、ＲＡＭ１３、及び副演算処理部２からもデータを読み書きすることが可能な共有メモリ３１を備え、記憶手段１２は、副演算処理部２による改竄検知を必要としないプログラムを記憶している。
【００２８】
主ＣＰＵ１１は、内部バス３０を介して主演算処理部１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部を制御するとともに、ハードディスク等の記憶手段１２に記憶されたプログラム、例えば共有メモリ３１へのアクセス制御プログラムをＲＡＭ１３へ展開することにより、種々のソフトウェア的機能を実行する。
【００２９】
ＲＡＭ１３は、ＤＲＡＭ等で構成され、記憶手段１２に記憶してあるプログラム、例えば共有メモリ３１へのアクセス制御プログラムを実行時に展開し、実行時に発生する一時的なデータを記憶する。また、共有メモリ３１は、内部バス３０を介して副演算処理部２からもアクセスすることが可能であり、共有メモリ３１に展開されたプログラム、例えばオペレーティングシステムを主ＣＰＵ１１が実行する。
【００３０】
副演算処理部２は、少なくとも副ＣＰＵ２１、記憶手段２２、ＲＡＭ２３、及び主演算処理部１からもデータを読み書きすることが可能な共有メモリ３１を備え、記憶手段２２は、オペレーティングシステム、制御プログラム等のプログラムを記憶するプログラム記憶部２２１、及び共有メモリ３１に対する処理の制限情報を記憶する処理制限情報記憶部２２２を備えている。
【００３１】
副ＣＰＵ２１は、内部バス３０を介して副演算処理部２の上述したようなハードウェア各部と接続されており、上述したハードウェア各部を制御するとともに、ハードディスク等のプログラム記憶部２２１に記憶された各種のプログラムをＲＡＭ２３へ展開することにより、種々のソフトウェア的機能を実行する。また、処理制限情報記憶部２２２に記憶してある共有メモリ３１に対する処理の制限情報に基づいて、共有メモリ３１へ展開されたプログラムを実行する前に改竄が行われる可能性の有無を判断する。
【００３２】
入力手段３は、情報処理装置を操作するために必要な文字キー、テンキー、各種のファンクションキー等を備えたキーボード、マウス等の入力媒体である。出力手段４は、液晶表示装置、ＣＲＴディスプレイ等の表示装置、レーザプリンタ、ドットプリンタ等の印刷装置等である。
【００３３】
以下、上述した構成の情報処理装置における主演算処理部１及び副演算処理部２の処理について説明する。情報処理装置の電源を入れる、又はリセットを行った場合、副ＣＰＵ２１が記憶手段２２のプログラム記憶部２２１から実行対象となるプログラムを読出し、共有メモリ３１に展開する。図２は、実行対象となるプログラムの構成の例示図である。
【００３４】
本実施の形態１で実行対象となるプログラム４０は、プログラム４０に対する改竄が行われたか否かを確認することができるようにするため、プログラム本体４１に加えて、プログラム４０のローディング方法、実行開始アドレス等を記憶してあるプログラム情報４２、外部からの処理を制限して保護されるべきメモリ領域を指定してある保護メモリ領域情報４３、及び改竄を検出するために用いるハッシュ情報４４で構成されている。ハッシュ情報４４に設定されるハッシュ値は、プログラム４０全体に対するハッシュ値であっても良いし、プログラム本体４１に対するハッシュ値であっても良い。
【００３５】
プログラム４０は、復号可能な鍵情報で暗号化されていても良いし、プログラム本体４１のみが復号可能な鍵情報で暗号化されていても良い。この場合、復号した後にハッシュ値を計算して改竄されているか否かを判断しても良いし、復号前にハッシュ値を計算して改竄されているか否かを判断してから復号しても良い。
【００３６】
副ＣＰＵ２１は、プログラム４０から保護メモリ領域情報４３を読出し、処理制限情報記憶部２２２に記憶する。図３は、処理制限情報記憶部２２２に記憶されるデータのデータ構成の一例を示す図である。図３（ａ）は保護されるべきメモリ領域を開始アドレスと終了アドレスとで指定する場合の、図３（ｂ）は開始アドレスと領域サイズとで指定する場合の、それぞれの場合のデータ構成を示している。図３に示すように、保護すべき対象、処理を制限する条件、及び処理を制限する場合の副ＣＰＵ２１が実行すべき処理を、メモリ領域と対応付けて記憶してある。
【００３７】
図３の例では、保護すべき対象は、メモリ又はＤＭＡと指定することができ、夫々に対して、保護すべきメモリ領域を指定する。処理を制限する条件は、読出し、書込み、及び読み書きを指定することができ、指定されたメモリ領域からの読出し又は指定されたメモリ領域への書込み、若しくは両者を検出した場合に、プログラムの実行を停止することが可能な処理を実行する。
【００３８】
プログラムの実行を停止することが可能な処理は、リブート及び主ＣＰＵ１１に対する割込み処理を指定する。前者は、情報処理装置を再起動することにより、保護されるべきメモリ領域の読み出し又は書き込みを未然に防止する。後者は、割込み処理により、主ＣＰＵ１１によるプログラムの実行を停止する。
【００３９】
図４は、本発明の実施の形態１に係る情報処理装置における副演算処理部２の副ＣＰＵ２１の処理手順を示すフローチャートである。副演算処理部２の副ＣＰＵ２１は、プログラム記憶部２２１から実行対象となるプログラムを読出し（ステップＳ４０１）、読出したプログラムのハッシュ値を算出する（ステップＳ４０２）。
【００４０】
副ＣＰＵ２１は、算出したハッシュ値が、記憶手段２２に記憶してある実行対象となるプログラムのハッシュ値と一致するか否かを判断し（ステップＳ４０３）、副ＣＰＵ２１が一致しないと判断した場合（ステップＳ４０３：ＮＯ）、副ＣＰＵ２１は、実行対象となるプログラムに何らかの改竄が行われているものと判断し、共有メモリ３１へ展開することなく、改竄が検出された旨を外部へ出力する（ステップＳ４０４）。具体的には、表示装置への警告メッセージの表示出力、印刷装置への警告メッセージの印字出力等である。
【００４１】
副ＣＰＵ２１が一致すると判断した場合（ステップＳ４０３：ＹＥＳ）、副ＣＰＵ２１は、プログラムに改竄が行われていないものと判断し、共有メモリ３１に実行対象となるプログラムを展開し（ステップＳ４０５）、展開したプログラムに含まれている保護メモリ領域情報を処理制限情報記憶部２２２に記憶する（ステップＳ４０６）。副ＣＰＵ２１は、共有メモリ３１に記憶してあるメモリ（ＤＭＡ）アクセス情報が更新されたか否かを判断する（ステップＳ４０７）。なお、メモリ（ＤＭＡ）アクセス情報は、主ＣＰＵ１１により実行されるプログラムに含まれる命令ごとの、共有メモリ３１への読み書きの区別、及び読み書きするアドレスに関する情報である。
【００４２】
副ＣＰＵ２１は、メモリ（ＤＭＡ）アクセス情報が更新されるまで待ち状態となり（ステップＳ４０７：ＮＯ）、副ＣＰＵ２１が、メモリ（ＤＭＡ）アクセス情報が更新されたと判断した場合（ステップＳ４０７：ＹＥＳ）、副ＣＰＵ２１は、共有メモリ３１へ記憶されたメモリ（ＤＭＡ）アクセス情報が、処理制限情報記憶部２２２に記憶してある保護メモリ情報と合致するか否かを判断する（ステップＳ４０８）。副ＣＰＵ２１が、合致すると判断した場合（ステップＳ４０８：ＹＥＳ）、副ＣＰＵ２１は、主ＣＰＵ１１が抽出した命令が不正な更新処理、例えば改竄を行う命令であると判断し、主ＣＰＵ１１に対してプログラムの実行を許可しない不許可信号を送信した後（ステップＳ４０９）、主ＣＰＵ１１に抽出した命令を実行させることなく、処理制限情報記憶部２２２から抽出した保護メモリ情報に対応した処理を実行する（ステップＳ４１０）。例えばリブートする、又は割り込み処理により共有メモリ３１に展開した実行対象となるプログラムを消去する。
【００４３】
副ＣＰＵ２１が、合致しないと判断した場合（ステップＳ４０８：ＮＯ）、副ＣＰＵ２１は、該命令は不正な処理を実行しないものと判断し、主ＣＰＵ１１に対してプログラムの実行を許可する許可信号を送信した後（ステップＳ４１１）、ステップＳ４０７へ戻り、上述した処理を繰り返す。
【００４４】
メモリ（ＤＭＡ）アクセス情報の更新処理は主ＣＰＵ１１が実行する。図５は、本発明の実施の形態１に係る情報処理装置における主演算処理部１の主ＣＰＵ１１の処理手順を示すフローチャートである。なお、ＣＰＵが実行する命令自体についてもメモリへの読み書きは発生しているが、説明を簡単にするために、命令の読み出しは正しく実行できていることを前提とする。主演算処理部１の主ＣＰＵ１１は、共有メモリ３１に展開してある実行対象のプログラムから、最初の命令を抽出し（ステップＳ５０１）、抽出した命令を実行する（ステップＳ５０２）。命令の実行により、共有メモリ３１への読み書きが発生する場合、読み書きの区別、及び読み書きするアドレスをメモリ（ＤＭＡ）アクセス情報として記憶する（ステップＳ５０３）。
【００４５】
主ＣＰＵ１１は、副ＣＰＵ２１から許可信号を受信したか否かを判断し（ステップＳ５０４）、主ＣＰＵ１１が許可信号を受信していないと判断した場合（ステップＳ５０４：ＮＯ）、不許可信号を受信したか否かを判断する（ステップＳ５０５）。主ＣＰＵ１１が不許可信号を受信したと判断した場合（ステップＳ５０５：ＹＥＳ）、主ＣＰＵ１１は、該プログラムに対する処理を終了する。主ＣＰＵ１１が不許可信号を受信していないと判断した場合（ステップＳ５０５：ＮＯ）、主ＣＰＵ１１はステップＳ５０４へ処理を戻す。なお、該命令の実行が許可されない場合、副ＣＰＵ２１により情報処理装置がリブートされる、又は主ＣＰＵ１１に対して割り込みが発生し、主ＣＰＵ１１によって該プログラムの処理を終了する。
【００４６】
主ＣＰＵ１１が、抽出した命令に対する許可信号を受信したと判断した場合（ステップＳ５０４：ＹＥＳ）、主ＣＰＵ１１は、全ての命令の実行が完了したか否かを判断し（ステップＳ５０６）、主ＣＰＵ１１が全ての命令の実行が完了したと判断した場合（ステップＳ５０６：ＹＥＳ）、処理を終了する。
【００４７】
主ＣＰＵ１１が、全ての命令の実行が完了していないと判断した場合（ステップＳ５０６：ＮＯ）、主ＣＰＵ１１は、次の命令を抽出して（ステップＳ５０７）、ステップ５０２へ戻り、上述した処理を繰り返す。
【００４８】
なお、共有メモリ３１へのアドレス制御は、静的なアドレス制御であってもＤＭＡであっても良い。ＤＭＡで制御する場合、主演算処理部１は、処理する共有メモリ３１のアドレスを制御するアドレス制御機能（アドレス制御手段）を主ＣＰＵ１１に備えており、アドレス制御機能により主ＣＰＵ１１が指示するアドレス範囲に記憶してあるプログラムに対する処理が、処理制限情報記憶部２２２に記憶してある処理制限情報と合致するか否かに応じて、主ＣＰＵ１１がプログラムを実行するか否かを制御する。
【００４９】
また、プログラムをプログラム記憶部２２１へ記憶する場合、副演算処理部２にて、プログラムを認証して改竄できない形に加工することが好ましい。これにより、認証後に改竄されないことを保証することができるからである。
【００５０】
プログラムの認証方法としては、ハッシュ、公開鍵による復号等があるが、特にこれらの方法に限定されるものではない。以下、記憶するプログラムがハッシュを算出した上で秘密鍵にて暗号化されており、副演算処理部２が公開鍵を記憶している場合を想定する。
【００５１】
副演算処理部２は、暗号化された状態のプログラムを公開鍵で復号する。復号したプログラムに対して、ハッシュを算出し、記憶してあるハッシュ値と比較する。ハッシュ値が異なる場合、改竄ありとしてプログラムを記憶することなく処理を終了する。
【００５２】
なお、プログラムサイズが大きく、処理が分割される場合には、復号処理及びハッシュ算出処理を繰り返し行う。この場合、ハッシュ値は、副演算処理部２内のＲＡＭ２３に記憶しておき、次の処理に利用する。
【００５３】
復号されたプログラムデータは、副演算処理部２内に記憶することが望ましい。しかし、一時領域としてメモリを使用することも可能である。この場合、主演算処理部１からの一時領域へのアクセスは禁止し、副演算処理部２からはアクセス可能としておく。
【００５４】
プログラムを復号しハッシュ値が一致する場合には、副演算処理部２が記憶している鍵にて暗号化を行い、プログラム記憶部２２１へ記憶する。復号時と同様、処理を分割して行ってもよい。なお、分割処理の際、暗号化処理を復号処理及びハッシュ算出処理に続いて行っても、改竄の確認処理の完了後に行っても、いずれでも良い。
【００５５】
以上のように本実施の形態１によれば、プログラムを実行する主演算処理部１とは別個に設けてある副演算処理部２が、プログラムの改竄の有無を判断することにより、オペレーティングシステムの管理外でプログラムの改竄を確認することができる。また、例えばオペレーティングシステムを起動する前にオペレーティングシステムに対する改竄が行われたか否かを確認することができることから、オペレーティングシステムに対する改竄により不正アクセスを行うことを未然に防止することも可能となる。さらに、プログラムを実行する都度、処理制限情報に基づくプログラム実行禁止処理の存在の有無を確認することができ、一定間隔でメモリ監視を定期的に実行する必要がなく、メモリへのアクセス帯域を圧迫することなく、計算機資源を有効に活用することが可能となる。
【００５６】
（実施の形態２）
図６は、本実施の形態２に係る情報処理装置の構成は実施の形態１と同様である。したがって、同一の機能を有する構成要素には同一の符号を付することで詳細な説明を省略する。本実施の形態２は、処理制限情報を記憶する処理制限情報記憶部が主演算処理部１に備えている点で実施の形態１と相違する。
【００５７】
すなわち、主演算処理部１の記憶手段１２は、各種の制御プログラムの他、処理制限情報を記憶した処理制限情報記憶部１２１を備えている。
【００５８】
以下、上述した構成の情報処理装置における主演算処理部１及び副演算処理部２の処理について説明する。情報処理装置の電源を入れる、又はリセットを行った場合、副ＣＰＵ２１が記憶手段２２のプログラム記憶部２２１から実行対象となるプログラムを読出し、共有メモリ３１に展開する。
【００５９】
副ＣＰＵ２１は、プログラム４０から保護メモリ領域情報４３を読出し、主ＣＰＵ１１へ送信する。主ＣＰＵ１１は、受信した保護メモリ領域情報４３を処理制限情報記憶部１２１に記憶する。処理制限情報記憶部１２１に記憶されるデータのデータ構成は、実施の形態１と同様である。
【００６０】
図７は、本発明の実施の形態２に係る情報処理装置における副演算処理部２の副ＣＰＵ２１の処理手順を示すフローチャートである。副演算処理部２の副ＣＰＵ２１は、プログラム記憶部２２１から実行対象となるプログラムを読出し（ステップＳ７０１）、読出したプログラムのハッシュ値を算出する（ステップＳ７０２）。
【００６１】
副ＣＰＵ２１は、算出したハッシュ値が、記憶部２２に記憶してある実行対象となるプログラムのハッシュ値と一致するか否かを判断し（ステップＳ７０３）、副ＣＰＵ２１が一致しないと判断した場合（ステップＳ７０３：ＮＯ）、副ＣＰＵ２１は、実行対象となるプログラムに何らかの改竄が行われているものと判断し、共有メモリ３１へ展開することなく、改竄が検出された旨を外部へ出力する（ステップＳ７０４）。具体的には、表示装置への警告メッセージの表示出力、印刷装置への警告メッセージの印字出力等である。
【００６２】
副ＣＰＵ２１が一致すると判断した場合（ステップＳ７０３：ＹＥＳ）、副ＣＰＵ２１は、共有メモリ３１に実行対象となるプログラムを展開し（ステップＳ７０５）、展開したプログラムに含まれている保護メモリ領域情報を処理制限情報記憶部１２１に記憶する（ステップＳ７０６）。副ＣＰＵ２１は、共有メモリ３１に記憶してあるメモリ（ＤＭＡ）アクセス情報が更新されたか否かを判断する（ステップＳ７０７）。なお、メモリ（ＤＭＡ）アクセス情報は、保護されるべきメモリ領域へのアクセス違反があった場合に記憶される情報であり、メモリへの読み書きの区別、読み書きするアドレス、及び違反時の処理に関する情報である。
【００６３】
副ＣＰＵ２１は、メモリ（ＤＭＡ）アクセス情報が更新されるまで待ち状態となり（ステップＳ７０７：ＮＯ）、副ＣＰＵ２１が、メモリ（ＤＭＡ）アクセス情報が更新されたと判断した場合（ステップＳ７０７：ＹＥＳ）、副ＣＰＵ２１は、メモリ（ＤＭＡ）アクセス情報に記憶して有る保護メモリ情報に対応する処理を実行する（ステップＳ７０８）。
【００６４】
メモリ（ＤＭＡ）アクセス情報の更新処理は主ＣＰＵ１１が実行する。図８は、本発明の実施の形態２に係る情報処理装置における主演算処理部１の主ＣＰＵ１１の処理手順を示すフローチャートである。主演算処理部１の主ＣＰＵ１１は、共有メモリ３１に展開してある実行対象のプログラムから、最初の命令を抽出し（ステップＳ８０１）、抽出した命令を実行する（ステップＳ８０２）。
【００６５】
主ＣＰＵ１１は、共有メモリ３１への読み書きが発生した場合、メモリ（ＤＭＡ）アクセス情報を抽出し（ステップＳ８０３）、処理制限情報記憶部１２１に記憶してある保護メモリ情報と合致するか否かを判断する（ステップＳ８０４）。主ＣＰＵ１１が、合致すると判断した場合（ステップＳ８０４：ＹＥＳ）、主ＣＰＵ１１は、抽出した命令が不正な更新処理、例えば改竄を行う命令であると判断し、抽出した命令を実行することなく、処理制限情報記憶部１２１から抽出した保護メモリ情報に対応した処理を含めてメモリ（ＤＭＡ）アクセス情報として記憶する（ステップＳ８０５）。
【００６６】
主ＣＰＵ１１が、合致しないと判断した場合（ステップＳ８０４：ＮＯ）、主ＣＰＵ１１は、該命令は不正な処理を実行しないものと判断し、実行対象のプログラムに含まれている全ての命令の実行が完了したか否かを判断する（ステップＳ８０６）。
【００６７】
主ＣＰＵ１１が、全ての命令の実行が完了していないと判断した場合（ステップＳ８０６：ＮＯ）、主ＣＰＵ１１は、次の命令を抽出して（ステップＳ８０７）、ステップ８０２へ戻り、上述した処理を繰り返す。主ＣＰＵ１１が、全ての命令の実行が完了したと判断した場合（ステップＳ８０６：ＹＥＳ）、処理を終了する。
【００６８】
なお、実施の形態１と同様に、共有メモリ３１へのアドレス制御は、静的なアドレス制御であってもＤＭＡであっても良い。ＤＭＡで制御する場合、主演算処理部１は、処理する共有メモリ３１のアドレスを制御するアドレス制御機能（アドレス制御手段）を主ＣＰＵ１１に備えており、アドレス制御機能により主ＣＰＵ１１が指示するアドレス範囲に記憶してあるプログラムに対する処理が、処理制限情報記憶部１２１に記憶してある処理制限情報と合致するか否かに応じて、主ＣＰＵ１１がプログラムを実行するか否かを制御する。
【００６９】
また、実施の形態１と同様に、プログラムをプログラム記憶部２２１へ記憶する場合、副演算処理部２にて、プログラムを認証して改竄できない形に加工することが好ましい。これにより、認証後に改竄されないことを保証することができるからである。
【００７０】
プログラムの認証方法としては、ハッシュ、公開鍵による復号等があるが、特にこれらの方法に限定されるものではない。以下、記憶するプログラムがハッシュ値を算出した上で秘密鍵にて暗号化されており、副演算処理部２が公開鍵を記憶している場合を想定する。
【００７１】
副演算処理部２は、暗号化された状態のプログラムを公開鍵で復号する。復号したプログラムに対して、ハッシュを算出し、記憶してあるハッシュ値と比較する。ハッシュ値が異なる場合、改竄ありとしてプログラムを記憶することなく処理を終了する。
【００７２】
なお、プログラムサイズが大きく、処理が分割される場合には、復号処理及びハッシュ算出処理を繰り返し行う。この場合、ハッシュ値は、副演算処理部２内のＲＡＭ２３に記憶しておき、次の処理に利用する。
【００７３】
復号されたプログラムデータは、副演算処理部２内に記憶することが望ましい。しかし、一時領域としてメモリを使用することも可能である。この場合、主演算処理部１からの一時領域へのアクセスは禁止し、副演算処理部２からはアクセス可能としておく。
【００７４】
プログラムを復号しハッシュ値が一致する場合には、副演算処理部２が記憶している鍵にて暗号化を行い、プログラム記憶部２２１へ記憶する。復号時と同様、処理を分割して行ってもよい。なお、分割処理の際、暗号化処理を復号処理及びハッシュ算出処理に続いて行っても、改竄の確認処理の完了後に行っても、いずれでも良い。
【００７５】
以上のように本実施の形態２によれば、プログラムを実行する主演算処理部１とは別個に設けてある副演算処理部２が、プログラムの改竄の有無を判断することにより、オペレーティングシステムの管理外でプログラムの改竄を確認することができる。また、例えばオペレーティングシステムを起動する前にオペレーティングシステムに対する改竄が行われたか否かを確認することができることから、オペレーティングシステムに対する改竄により不正アクセスを行うことを未然に防止することも可能となる。さらに、プログラムを実行する都度、処理制限情報に基づくプログラム実行禁止処理の存在の有無を確認することができ、一定間隔でメモリ監視を定期的に実行する必要がなく、メモリへのアクセス帯域を圧迫することなく、計算機資源を有効に活用することが可能となる。
【００７６】
なお、本実施の形態では、処理制限情報に記憶するアドレス範囲をプログラム４０から読み出して記憶する方法について説明しているが、特にこれに限定されるものではなく、実行頻度の高いプログラムについては事前に記憶しておいても良い。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態１に係る情報処理装置の構成を示すブロック図である。
【図２】実行対象となるプログラムの構成の例示図である。
【図３】処理制限情報記憶部に記憶されるデータのデータ構成の一例を示す図である。
【図４】本発明の実施の形態１に係る情報処理装置における副演算処理部の副ＣＰＵの処理手順を示すフローチャートである。
【図５】本発明の実施の形態１に係る情報処理装置における主演算処理部の主ＣＰＵの処理手順を示すフローチャートである。
【図６】本発明の実施の形態２に係る情報処理装置の構成を示すブロック図である。
【図７】本発明の実施の形態２に係る情報処理装置における副演算処理部の副ＣＰＵの処理手順を示すフローチャートである。
【図８】本発明の実施の形態２に係る情報処理装置における主演算処理部の主ＣＰＵの処理手順を示すフローチャートである。
【符号の説明】
【００７８】
１  主演算処理部
２  副演算処理部
３  入力手段
４  出力手段
１１  主ＣＰＵ
１２、２２  記憶手段
１３、２３  ＲＡＭ
２１  副ＣＰＵ
３０  内部バス
３１  共有メモリ
１２１、２２２  処理制限情報記憶部
２２１  プログラム記憶部
【図１】
2006323675.tif 000003
【図２】
2006323675.tif 000004
【図３】
2006323675.tif 000005
【図４】
2006323675.tif 000006
【図５】
2006323675.tif 000007
【図６】
2006323675.tif 000008
【図７】
2006323675.tif 000009
【図８】
2006323675.tif 000010