(57)【要約】  本発明は、セキュアＣＰＵ及びノンセキュアＣＰＵを搭載した情報処理装置であって、プログラムの改竄を確実に検出することができる情報処理装置を提供することを目的とする。  本発明の情報処理装置は、セキュアＣＰＵ１と、ノンセキュアＣＰＵ２と、不揮発メモリ３と、ブートＲＯＭ１１と、ＲＡＭ１２と、を備え、セキュアＣＰＵ１が、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して、不揮発メモリ３に記憶された各種プログラムの改竄の有無を検証し、検証した結果に応じて、不揮発メモリ３に記憶されたセキュアＣＰＵ対象プログラム３１をＲＡＭ１２に展開し、ＲＡＭ１２に展開したロードプログラムを参照して、不揮発メモリ３に記憶されたノンセキュアＣＰＵ対象プログラムをノンセキュアＣＰＵ２に出力する。
2009013825.tif 000002
【特許請求の範囲】
【請求項１】
第２のＣＰＵよりも安全性の高いプロセッサモードにて各種プログラムを実行する第１のＣＰＵと、
前記第１のＣＰＵが実行すべき各種プログラムと、前記第２のＣＰＵが実行すべき各種プログラムと、を記憶するプログラム記憶部と、
各種プログラムの改竄の有無を検証するための改竄検証プログラムを記憶する改竄検証プログラム記憶部と、
第１のＲＡＭと、
を備え、
前記第１のＣＰＵは、前記改竄検証プログラム記憶部に記憶された改竄検証プログラムを参照して、前記プログラム記憶部に記憶された各種プログラムの改竄の有無を検証する第１の改竄検証手段と、前記第１の改竄検証手段によって検証した結果に応じて、前記プログラム記憶部に記憶された当該第１のＣＰＵが実行すべき各種プログラムを前記第１のＲＡＭに展開する第１のプログラム起動手段と、前記プログラム記憶部に記憶された前記第２のＣＰＵが実行すべき各種プログラムを前記第２のＣＰＵに出力するロード手段と、を備える情報処理装置。
【請求項２】
請求項１記載の情報処理装置であって、
前記第１のＣＰＵは、さらに、出力手段を備え、
前記第１のプログラム起動手段は、前記第１の改竄検証手段によって検証した結果、改竄が有ることが検出されれば、前記プログラム記憶部に記憶された当該第１のＣＰＵが実行すべき各種プログラムのすべて、または当該各種プログラムのうちの改竄が有ることが検出されたプログラムを展開せず、
前記出力手段は、前記第１の改竄検証手段によって検証した結果、改竄が有ることが検出されれば、改竄が有ることが検出されたことを出力する、
情報処理端末。
【請求項３】
請求項１または２記載の情報処理装置であって、
前記第１のＣＰＵは、前記第２のＣＰＵを認証する第１の認証手段を備え、
前記ロード手段は、前記プログラム記憶部に記憶された前記第２のＣＰＵが実行すべき各種プログラムを、前記第１の認証手段による認証に成功した前記第２のＣＰＵに出力する、
情報処理装置。
【請求項４】
請求項１から３のいずれか一項に記載の情報処理装置であって、
前記第１のＣＰＵは、前記第１のプログラム起動手段が前記第１のＲＡＭに展開した改竄検証プログラムを参照して、前記プログラム記憶部に記憶された各種プログラムの改竄の有無を検証する第２の改竄検証手段を備える情報処理装置。
【請求項５】
請求項１から４のいずれか一項に記載の情報処理装置であって、
前記第２のＣＰＵを備える情報処理装置。
【請求項６】
請求項５記載の情報処理装置であって、
第２のＲＡＭを備え、
前記第２のＣＰＵは、前記第１のＣＰＵから入力した当該第２のＣＰＵが実行すべき各種プログラムを前記第２のＲＡＭに展開する第２のプログラム起動手段を備える情報処理装置。
【請求項７】
請求項６記載の情報処理装置であって、
前記第２のＣＰＵは、前記第１のＣＰＵを認証する第２の認証手段を備える情報処理装置。
【請求項８】
請求項７記載の情報処理装置であって、
前記認証プログラムは、耐タンパー化が施されている情報処理装置。
【請求項９】
請求項５から８のいずれか一項に記載の情報処理装置であって、
前記第２のＣＰＵは、前記第２のプログラム起動手段が前記第２のＲＡＭに展開した改竄検証プログラムを参照して前記第１のＣＰＵから入力した当該第２のＣＰＵが実行すべき各種プログラムの改竄の有無を検証する第３の改竄検証手段を備える情報処理装置。
【請求項１０】
請求項９記載の情報処理装置であって、
前記第３の改竄検証手段は、耐タンパー化が施されている情報処理装置。
【請求項１１】
第１のＣＰＵよりも安全性の高いプロセッサモードにて、各種プログラムを実行する第２のＣＰＵによって行う改竄検証方法であって、
ブートメモリに記憶された改竄検証プログラムを参照して、不揮発メモリに記憶された各種プログラムの改竄の有無を検証するステップと、
検証した結果に応じて、前記不揮発メモリに記憶された前記第１のＣＰＵが実行すべき各種プログラムを第１のＲＡＭに展開するステップと、
前記不揮発メモリに記憶された前記第２のＣＰＵが実行すべき各種プログラムを前記第２のＣＰＵに出力するステップと、
を有する改竄検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムコードを実行する際に必要に応じてプロセッサモードを切り替えるプロセッサ（ＣＰＵ）を備えた情報処理装置、その情報処理装置による改竄検証方法に関する。
【背景技術】
【０００２】
近年、セキュアプロセッサに関する研究、開発が進められている。セキュアプロセッサとは、当該プロセッサの外部で扱われるデータには暗号化（暗号鍵による暗号化、またはデジタル署名による暗号化）を施し、一方、当該プロセッサの内部では暗号化されたデータの復号化を行うことで、外部からのデータの読み取りを困難なものにすることができるプロセッサのことを指す。以降、セキュアプロセッサが、外部からの不正な読み取りに対してデータを保護しつつ、当該データを用いてデータ処理を行うモードをセキュアモードと称し、一方、外部からの不正な読み取りに対してデータを保護せずに、当該データを用いてデータ処理を行うモードをノンセキュアモードと称する。【０００３】
セキュアモードによってプログラムコードを実行することができるＣＰＵ（このＣＰＵを、以下、セキュアＣＰＵと称する）は、ノンセキュアモードによってのみプログラムコードを実行することができるＣＰＵ（このＣＰＵを、以下、ノンセキュアＣＰＵと称する）と比べると製造コストが大きくなってしまう。近年の情報処理装置には複数のＣＰＵを搭載したものがあるが、これら複数のＣＰＵとして、セキュアＣＰＵのみを利用するとなると、情報処理装置もまた高額なものになってしまう。このため、情報処理装置に複数のＣＰＵを搭載する場合には、セキュアＣＰＵとノンセキュアＣＰＵとを併用する構成が提案されている。【０００４】
例えば、特許文献１には、ノンセキュアＣＰＵを搭載したＰＣと、そのＰＣに接続された、セキュアＣＰＵを搭載した保護装置と、について記載されており、保護装置によってＰＣによるブート時の改竄の有無を検証する方法について開示されている。特許文献１において、ＰＣは、電源が投入されると、ＰＣのノンセキュアＣＰＵを起動し、その後、当該ＰＣに接続された保護装置のセキュアＣＰＵを起動する。ＰＣによる制御によってセキュアＣＰＵを起動した保護装置は、ＰＣのＨＤＤに保存された暗号化された状態のプログラムを読み取り、暗号化された状態のプログラムを復号し、そのプログラムに対して耐タンパー化を施し、耐タンパー化を施したプログラムのハッシュ値を記憶し、耐タンパー化を施したプログラムをＰＣのノンセキュアＣＰＵのメモリに展開する。ＰＣのノンセキュアＣＰＵは、そのメモリに展開された耐タンパー化を施したプログラムを基に、ＯＳを起動することになる。一方、保護装置は、ＰＣのノンセキュアＣＰＵのメモリから耐タンパー化を施したプログラムを定期的に読み取り、そのプログラムのハッシュ値を計算し、記憶しておいたハッシュ値と一致するか否かによって、ＣＰＵのノンセキュアＣＰＵのメモリに展開されているプログラムが改竄されているか否かを検証する。
【特許文献１】特開２００５−０８５１８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されている保護装置は、保護装置のセキュアＣＰＵがＰＣのＨＤＤに保存された暗号化された状態のプログラムを読み取る前に当該プログラムが改竄されてしまっていると、改竄されたプログラムを基に算出されたハッシュ値が記憶されてしまうため、以後の改竄検証処理によって、当該プログラムが改竄されていることを検出することができない。また、ＰＣのノンセキュアＣＰＵを起動した後、保護装置のセキュアＣＰＵを起動する処理工程では、ノンセキュアＣＰＵを起動する処理の安全性がセキュアＣＰＵによって保証されていないため、安全性に問題がある。【０００６】
本発明は、上記事情に鑑みてなされたもので、セキュアＣＰＵ及びノンセキュアＣＰＵを搭載した情報処理装置であって、プログラムの改竄を確実に検出することができる情報処理装置、及びその情報処理装置による改竄検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、第２のＣＰＵよりも安全性の高いプロセッサモードにて各種プログラムを実行する第１のＣＰＵと、前記第１のＣＰＵが実行すべき各種プログラムと、前記第２のＣＰＵが実行すべき各種プログラムと、を記憶するプログラム記憶部と、各種プログラムの改竄の有無を検証するための改竄検証プログラムを記憶する改竄検証プログラム記憶部と、第１のＲＡＭと、を備え、前記第１のＣＰＵが、前記改竄検証プログラム記憶部に記憶された改竄検証プログラムを参照して、前記プログラム記憶部に記憶された各種プログラムの改竄の有無を検証する第１の改竄検証手段と、前記第１の改竄検証手段によって検証した結果に応じて、前記プログラム記憶部に記憶された当該第１のＣＰＵが実行すべき各種プログラムを前記第１のＲＡＭに展開する第１のプログラム起動手段と、前記プログラム記憶部に記憶された前記第２のＣＰＵが実行すべき各種プログラムを前記第２のＣＰＵに出力するロード手段と、を備えるものである。【０００８】
本発明の改竄検証方法は、第１のＣＰＵよりも安全性の高いプロセッサモードにて、各種プログラムを実行する第２のＣＰＵによって行う改竄検証方法であって、ブートメモリに記憶された改竄検証プログラムを参照して、不揮発メモリに記憶された各種プログラムの改竄の有無を検証するステップと、検証した結果に応じて、前記不揮発メモリに記憶された前記第１のＣＰＵが実行すべき各種プログラムを第１のＲＡＭに展開するステップと、前記不揮発メモリに記憶された前記第２のＣＰＵが実行すべき各種プログラムを前記第２のＣＰＵに出力するステップと、を有するものである。【０００９】
また、本発明の情報処理装置は、前記第２のＣＰＵを備えるものを含む。【００１０】
また、本発明の情報処理装置は、第２のＲＡＭを備え、前記第２のＣＰＵが、前記第１のＣＰＵから入力した当該第２のＣＰＵが実行すべき各種プログラムを前記第２のＲＡＭに展開する第２のプログラム起動手段を備えるものである。【００１１】
この構成により、不揮発メモリ（プログラム記憶部）に記憶されたプログラムの改竄を確実に検出することができる。【００１２】
また、本発明の情報処理装置は、前記第１のＣＰＵが、さらに、出力手段を備え、前記第１のプログラム起動手段が、前記第１の改竄検証手段によって検証した結果、改竄が有ることが検出されれば、前記プログラム記憶部に記憶された当該第１のＣＰＵが実行すべき各種プログラムのすべて、または当該各種プログラムのうちの改竄が有ることが検出されたプログラムを展開せず、前記出力手段が、前記第１の改竄検証手段によって検証した結果、改竄が有ることが検出されれば、改竄が有ることが検出されたことを出力する、ものを含む。【００１３】
この構成により、プログラムの改竄が検出されたことを、情報処理装置利用者に通知することができる。【００１４】
また、本発明の情報処理装置は、前記第１のＣＰＵが、前記第２のＣＰＵを認証する第１の認証手段を備え、前記ロード手段が、前記プログラム記憶部に記憶された前記第２のＣＰＵが実行すべき各種プログラムを、前記第１の認証手段による認証に成功した前記第２のＣＰＵに出力する、ものを含む。【００１５】
また、本発明の情報処理装置は、前記第２のＣＰＵが、前記第１のＣＰＵを認証する第２の認証手段を備えるものを含む。【００１６】
また、本発明の情報処理装置は、前記認証プログラムが、耐タンパー化が施されているものを含む。【００１７】
この構成により、不揮発メモリ（プログラム記憶部）に記憶された各種プログラムを、そのプログラムを実行すべきＣＰＵにのみ出力することができるため、認証に成功し得ない他のＣＰＵへのプログラムの漏洩を防ぐことができる。【００１８】
また、本発明の情報処理装置は、前記第１のＣＰＵが、前記第１のプログラム起動手段が前記第１のＲＡＭに展開した改竄検証プログラムを参照して、前記プログラム記憶部に記憶された各種プログラムの改竄の有無を検証する第２の改竄検証手段を備えるものを含む。【００１９】
この構成により、ＲＡＭ１２に展開された改竄検証プログラムの安全性をブートＲＯＭ（改竄検証プログラム記憶部）に記憶された改竄検証プログラムによる改竄検証によって保証することとなり、その結果、不揮発メモリ（プログラム記憶部）に記憶された改竄検証プログラムを更新することができる。【００２０】
また、本発明の情報処理装置は、前記第２のＣＰＵが、前記第２のプログラム起動手段が前記第２のＲＡＭに展開した改竄検証プログラムを参照して前記第１のＣＰＵから入力した当該第２のＣＰＵが実行すべき各種プログラムの改竄の有無を検証する第３の改竄検証手段を備えるものを含む。【００２１】
また、本発明の情報処理装置は、前記第３の改竄検証手段が、耐タンパー化が施されているものを含む。【００２２】
この構成により、２つのＣＰＵに改竄検証処理を行わせることで改竄検証処理にかかる時間を短縮することができる。
【発明の効果】
【００２３】
本発明の情報処理装置及び改竄検証方法によれば、セキュアＣＰＵ及びノンセキュアＣＰＵによって、プログラムの改竄を確実に検出することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１実施形態の情報処理装置におけるハードウェアの構成図
【図２】本発明の第１実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンス
【図３】本発明の第１実施形態の情報処理装置による、セッション確立時の処理のシーケンス
【図４】本発明の第２実施形態の情報処理装置におけるハードウェアの構成図
【図５】本発明の第２実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンス
【符号の説明】
【００２５】
１  セキュアＣＰＵ
１１  ブートＲＯＭ
１１１  第１改竄検証プログラム
１１２  ＩＰＬプログラム
１２  ＲＡＭ
１２１  起動制御プログラム
１２２  ロードプログラム
１２３  認証プログラム
１２４  第２改竄検証プログラム
２  ノンセキュアＣＰＵ
２１  ＲＡＭ
２１１  ＩＰＬプログラム
２１２  起動制御プログラム
２１３  ＴＲＳ化認証プログラム
２１４  ＴＲＳ化改竄検証プログラム
３  不揮発メモリ
３１  セキュアＣＰＵ対象プログラム
３２  ノンセキュアＣＰＵ対象プログラム
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態の情報処理装置について詳細に説明する。【００２７】
（第１実施形態）
本発明の第１実施形態の情報処理装置について説明する。まず、本発明の第１実施形態の情報処理装置におけるハードウェアの構成を、図１に示す本発明の第１実施形態の情報処理装置におけるハードウェアの構成図を参照して説明する。本発明の第１実施形態の情報処理装置は、セキュアＣＰＵ１、ノンセキュアＣＰＵ２、及び不揮発メモリ３を含んで構成される。また、セキュアＣＰＵ１は、ブートＲＯＭ１１及びＲＡＭ１２を含んで構成され、ノンセキュアＣＰＵ２は、ＲＡＭ２１を含んで構成される。なお、ＲＡＭ１２及びＲＡＭ２１は同一のメモリであり、ＣＰＵ１とＣＰＵ２が使用する領域を分けることで仮想的に二つのメモリとして扱ってもよい。【００２８】
セキュアＣＰＵ１のブートＲＯＭ１１は、読み出し専用記憶装置であり、プログラムの改竄の有無を検証するための第１改竄検証プログラムや、情報処理装置に電源が投入されたときに実行されるべきプログラム（ＩＰＬ：Initial Program Loader）を記憶している。また、セキュアＣＰＵ１は、不揮発メモリ３から読み出したセキュアＣＰＵ対象プログラム３１をセキュアＣＰＵ１のＲＡＭ１２に展開する。セキュアＣＰＵ１は、ブートＲＯＭ１１及びＲＡＭ１２に記憶または展開されているプログラムを実行する。セキュアＣＰＵ１が実行する各種処理については、後述するシーケンスを参照して説明する。【００２９】
ノンセキュアＣＰＵ２は、セキュアＣＰＵ１が不揮発メモリ３から読み出しノンセキュアＣＰＵ２のＲＡＭ２１に展開したノンセキュアＣＰＵ対象プログラム３２を実行する。ノンセキュアＣＰＵ２が実行する各種処理については、後述するシーケンスを参照して説明する。なお、ＣＰＵ１とＣＰＵ２は異なるチップとして実装される場合と、同一チップ上に二つのコアとして実装される場合を想定する。また、ノンセキュアなＣＰＵが複数存在する場合はセキュアなＣＰＵは順次改ざん検証したプログラムをノンセキュアなＣＰＵへロードすることも可能である。【００３０】
不揮発メモリ３には、セキュアＣＰＵ１が実行すべきセキュアＣＰＵ対象プログラム３１（起動制御プログラム、ロードプログラム、認証プログラム、及びその他各種プログラム）、及びノンセキュアＣＰＵ２が実行すべきノンセキュアＣＰＵ対象プログラム３２（ＩＰＬプログラム、起動制御プログラム、ＴＲＳ化認証プログラム、及びその他各種プログラム）が記憶されている。以下、図２に示す、本発明の第１実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンスを参照して、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理を説明する。【００３１】
図２のシーケンスでは、セキュアＣＰＵ１は、セキュアモードとノンセキュアモードの二つのプロセッサモードに切り替えることができ、より高い安全性を要求される処理を実施するときは、セキュアモードにてプログラムを実行するものとする。一方、ノンセキュアＣＰＵ２は、ノンセキュアモードのみにてプログラムを実行するものとする。【００３２】
本発明の第１実施形態の情報処理装置は、電源が投入されるとまず、セキュアＣＰＵ１を起動する。セキュアＣＰＵ１は、ブートＲＯＭ１２に記憶されたＩＰＬ（Initial Program Loader）プログラムを参照して、不揮発メモリ３から最初に読み出して起動すべきプログラム（図１における、セキュアＣＰＵ対象プログラム３１の各プログラム及びノンセキュアＣＰＵ対象プログラム３２の各プログラム）の先頭アドレスを読み出す。セキュアＣＰＵ１は、ＩＰＬプログラムを参照して読み出した先頭アドレスを基に、不揮発メモリ３における改竄検証されるべきプログラムを特定し、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して改竄検証処理を実施する。セキュアＣＰＵ１によって改竄検証処理を実施することにより、ノンセキュアＣＰＵ２による同様の改竄検証処理よりも安全性を高めることができる。また、電源投入時にセキュアＣＰＵ１をまず起動することによって、その後起動するノンセキュアＣＰＵ２による処理の安全性をセキュアＣＰＵ１によって保証することができる。【００３３】
セキュアＣＰＵ１による改竄検証処理は、次の通りである。ノンセキュアモードにより起動されたセキュアＣＰＵ１は、改竄検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、改竄検証要求を通知されると、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１のそれぞれのプログラム（起動制御プログラム、ロードプログラム、認証プログラム、及びその他各種プログラム）及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラム（ＩＰＬプログラム、起動制御プログラム、ＴＲＳ化認証プログラム、及びその他各種プログラム）に対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。改竄検証を行ったセキュアモードのセキュアＣＰＵ１は、改竄検証の結果をノンセキュアモードのセキュアＣＰＵ１に通知する。ノンセキュアモードのＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の起動制御プログラム、ロードプログラム、認証プログラムの少なくとも一つに改竄が有りと通知されれば、それらすべてのプログラムをＲＡＭ１２に展開しない。なお、ＲＡＭにはプログラムを展開しておき、実行のみを禁止することも可能である。展開しない場合、エラーを表示またはＬＥＤを点滅するなどしてユーザに通知することも可能である。また、ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＩＰＬプログラム、起動制御プログラム、ＴＲＳ化認証プログラムの少なくとも一つに改竄が有りと通知されれば、それらのすべてのプログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開しない。このように、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１とノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに対して、セキュアＣＰＵ１が改竄検証処理を実施することにより、ノンセキュアＣＰＵ２による同様の改竄検証処理よりも安全性を高めることができ、また、プログラムの改竄を確実に検出することができる。なお、本実施例ではノンセキュアモードのＣＰＵ１から起動が開始しているが、より安全性を向上するためセキュアモードのＣＰＵ２から起動を行なっても構わない。【００３４】
ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１のそれぞれのプログラム、及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに改竄が無いと通知されれば、まず、不揮発メモリ３から読み出した、セキュアＣＰＵ対象プログラム３１のうちの起動制御プログラム１２１をＲＡＭ１２に展開し、その起動制御プログラムを実行する。起動制御プログラム１２１は、ＲＡＭ１２に展開するプログラムをセキュアＣＰＵ１に指示し、セキュアＣＰＵ１にそのプログラムを展開させる機能を有する。続いてノンセキュアモードのセキュアＣＰＵ１は、起動制御プログラム１２１を参照して、ロードプログラム１２２及び認証プログラム１２３をＲＡＭ１２に展開する。セキュアＣＰＵ１による起動制御プログラム１２１、ロードプログラム１２２及び認証プログラム１２３のＲＡＭ１２への展開が、図２における展開処理に相当する。【００３５】
ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開されたロードプログラム１２２を実行する。ロードプログラム１２２は、セキュアＣＰＵ１に、不揮発メモリ３から読み出したノンセキュアＣＰＵ対象プログラム３２をノンセキュアＣＰＵ２のＲＡＭ２１に展開させる機能を有する。このため、ロードプログラム１２２を実行したセキュアＣＰＵ１は、ノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラム（ＩＰＬプログラム、起動制御プログラム、及びＴＲＳ化認証プログラム）を不揮発メモリ３から読み出し、ノンセキュアＣＰＵ２のＲＡＭ２１に展開する（図２におけるロード処理に相当する）。一方、ＲＡＭ２１にノンセキュアＣＰＵ対象プログラム３２が展開されたノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して、ＲＡＭ２１から最初に読み出して起動すべき起動制御プログラムの先頭アドレスを読み出す。ノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して読み出した起動制御プログラム２１２の先頭アドレスを基に、ＲＡＭ２１に記憶された起動制御プログラム２１２を特定し、その起動制御プログラム２１２を実行する。起動制御プログラム２１２は、ノンセキュアＣＰＵ２に実行させるプログラムを指示する機能を有する。続いてノンセキュアＣＰＵ２は、起動制御プログラム２１２を参照して特定したＴＲＳ化認証プログラム２１３を実行する。【００３６】
続いて、ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開された認証プログラム１２３を実行する。認証プログラム１２３は、セキュアＣＰＵ１が、ノンセキュアＣＰＵ２を認証する機能を有する。本発明の実施の形態では、セキュアＣＰＵ１は、チャレンジアンドレスポンス方式に則って、ノンセキュアＣＰＵ２との間で認証を行うものとする。セキュアＣＰＵ１は、ノンセキュアＣＰＵ２が実行すべきノンセキュアＣＰＵ対象プログラム３２のその他各種プログラムを、ノンセキュアＣＰＵ２のＲＡＭ２１のみに展開する必要があるため、通信中のＣＰＵがノンセキュアＣＰＵ２であることを予め認証しておかなければならない。認証プログラム１２３実行時の認証処理の流れとしては、セキュアＣＰＵ１は、乱数を生成し、その乱数値を保存し、その乱数値をチャレンジ信号としてノンセキュアＣＰＵ２に送信する（あるいは、ノンセキュアＣＰＵ２と共通の認証鍵によって暗号化した乱数値をチャレンジ信号としてノンセキュアＣＰＵ２に送信する）。ノンセキュアＣＰＵ２は、そのチャレンジ信号と認証鍵（この認証鍵は、ＴＲＳ（Tamper Resistant Software）化認証プログラムにデータとして格納されている。なお、ＴＲＳ化認証プログラムは、耐タンパー化されているため、認証鍵もまた保護される。）とからレスポンス信号を生成し、そのレスポンス信号をセキュアＣＰＵ１に返信する（あるいは、そのチャレンジ信号を認証鍵によって復号化したレスポンス信号をセキュアＣＰＵ１に返信する）。セキュアＣＰＵ１は、保存しておいた乱数値と、ノンセキュアＣＰＵ２と共通の認証鍵によって上記レスポンス信号を復号した数値とを比較することによって（あるいは、保存しておいた乱数値と、レスポンス信号を比較することによって）、ノンセキュアＣＰＵ２との認証成功、または認証失敗を判定する。なお、上述した認証処理の流れにおけるセキュアＣＰＵ１とノンセキュアＣＰＵ２との役割を入れ替え、ノンセキュアＣＰＵ２がセキュアＣＰＵ１を認証するようにしてもよいし、セキュアＣＰＵ１及びノンセキュアＣＰＵ２が、相互に認証するようにしてもよい。【００３７】
本発明の第１実施形態では、セキュアＣＰＵ１がノンセキュアＣＰＵ２を認証する場合について説明する。ノンセキュアモードのセキュアＣＰＵ１は、乱数要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、乱数要求を通知されると、乱数を生成し、その乱数値をチャレンジ信号としてノンセキュアモードのセキュアＣＰＵ１に返す。セキュアモードのセキュアＣＰＵ１によって乱数を発生させることにより、ノンセキュアＣＰＵ２との認証処理の安全性を向上させることができる。また、セキュアＣＰＵ１は、上述したロード処理よりも前に、チャレンジ信号を生成しておき、ロード処理時に、ノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開するとともに、生成しておいたチャレンジ信号を送信するようにする。セキュアＣＰＵ１がロード処理時にチャレンジ信号をノンセキュアＣＰＵ２に送信することにより、セキュアＣＰＵ１とノンセキュアＣＰＵ２との通信工程を減らすことができる。【００３８】
ノンセキュアＣＰＵ２は、ＴＲＳ化認証プログラム２１３を実行すると、ロード処理時にセキュアＣＰＵ１から受信したチャレンジ信号と認証鍵とからレスポンス信号を生成し、そのレスポンス信号をセキュアＣＰＵ１に返信する。【００３９】
ノンセキュアモードのセキュアＣＰＵ１は、レスポンス信号をノンセキュアＣＰＵ２から受信すると、レスポンス信号を検証するよう要求する検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、検証要求を通知されると、保存しておいた乱数値とレスポンス信号と認証鍵とから、ノンセキュアＣＰＵ２との認証成功、または認証失敗を判定し、その判定の結果をノンセキュアモードのＣＰＵ１に返す。ノンセキュアモードのＣＰＵ１は、その判定の結果をノンセキュアＣＰＵ２に送信する。【００４０】
ノンセキュアモードのセキュアＣＰＵ１は、認証成功と判定すれば、起動制御プログラム１２１を参照して、セキュアＣＰＵ対象プログラム３１のその他各種プログラムをＲＡＭ１２に展開し、そのプログラムを実行する（展開処理）。また、ノンセキュアモードのセキュアＣＰＵ１は、ロードプログラム１２２を実行し、ノンセキュアＣＰＵ対象プログラム３２のその他各種プログラムを不揮発メモリ３から読み出し、ノンセキュアＣＰＵ２のＲＡＭ２１に展開する（ロード処理）。一方、認証失敗と判定すれば、セキュアＣＰＵ対象プログラム３１のその他各種プログラムをＲＡＭ１２に展開せず、また、ノンセキュアＣＰＵ対象プログラム３２のその他各種プログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開しない。【００４１】
以上、本発明の第１実施形態の情報処理装置によれば、セキュアＣＰＵ１によって改竄検証処理を実施することにより、ノンセキュアＣＰＵ２による同様の改竄検証処理よりも安全性を高めることができる。また、電源投入時にセキュアＣＰＵ１をまず起動することによって、ノンセキュアＣＰＵ２を起動する処理の安全性をセキュアＣＰＵによって保証することができ、また、プログラムの改竄を確実に検出することができる。【００４２】
ところで、セキュアＣＰＵ１が、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時、チャレンジアンドレスポンス方式に則ってノンセキュアＣＰＵ２を認証することは、上述した通りである。セキュアＣＰＵ１とノンセキュアＣＰＵ２は、認証に成功した後、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間で次に説明するセッション確立処理を実施してもよい。図３に、本発明の第１実施形態の情報処理装置による、セッション確立時の処理のシーケンスを示す。【００４３】
ノンセキュアモードのセキュアＣＰＵ１は、ノンセキュアＣＰＵ２との認証に成功した後、セッション鍵を生成するよう要求するセッション鍵生成要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、セッション鍵生成要求を通知されると、チャレンジアンドレスポンス方式の認証時に用いた認証鍵と乱数（チャレンジ信号）から、セッション鍵を生成する。同じく、ノンセキュアＣＰＵ２は、セキュアＣＰＵ１との認証に成功した後、チャレンジアンドレスポンス方式の認証時に用いた認証鍵と乱数（チャレンジ信号）から、セッション鍵を生成する。【００４４】
ノンセキュアモードのセキュアＣＰＵ１は、セッション鍵を生成した後、ノンセキュアＣＰＵ２にメッセージを送信する場合には、セッション鍵による当該メッセージの暗号化、及び、その暗号化したメッセージとセッション鍵とによるＨＭＡＣの生成、をセキュアモードのセキュアＣＰＵ１に要求する。他方、ノンセキュアＣＰＵ２からメッセージを受信した場合には、セッション鍵による受信したメッセージの復号化、及び、その受信したメッセージに添付されているＨＭＡＣの検証を、セキュアモードのセキュアＣＰＵ１に要求する。ノンセキュアモードのセキュアＣＰＵ１は、セキュアモードのセキュアＣＰＵ１から暗号化されたメッセージ、及び生成されたＨＭＡＣを受け取ると、そのメッセージにそのＨＭＡＣを添付して、ノンセキュアＣＰＵ２に送信する。他方、セキュアモードのセキュアＣＰＵ１から復号化されたメッセージ、及びＨＭＡＣによる認証に成功した旨の通知を受け取ると、そのメッセージに応じた処理を実施する。同じく、ノンセキュアＣＰＵ２は、セッション鍵を生成した後、セキュアＣＰＵ１にメッセージを送信する場合には、セッション鍵による当該メッセージの暗号化、及び、その暗号化したメッセージとセッション鍵とによるＨＭＡＣの生成、を行い、そのメッセージにそのＨＭＡＣを添付して、セキュアＣＰＵ１に送信する。他方、セキュアＣＰＵ１からメッセージを受信した場合には、セッション鍵による受信したメッセージの復号化、及び、その受信したメッセージに添付されているＨＭＡＣの検証を、行い、ＨＭＡＣによる認証に成功した旨の通知を受け取ると、そのメッセージに応じた処理を実施する。【００４５】
このように、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間でのメッセージのやりとりをセッション鍵とＨＭＡＣを利用して行うことにより、秘匿性を向上させることができ、その結果、ノンセキュアＣＰＵ２からのメッセージの漏洩を防止することができる。なお、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間において、所定の時間間隔でチャレンジアンドレスポンス方式による認証を行ってもよいが、一旦セキュアＣＰＵ１とノンセキュアＣＰＵ２との間でセッションを確立させた後は、チャレンジアンドレスポンス方式による認証の代わりに、セッション鍵とＨＭＡＣを利用した認証を用いるようにしてもよい。これにより、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間での認証にかかる時間を短縮することができる。【００４６】
ところで、セキュアＣＰＵ１には、プロセッサモードの一つとして、処理に伴う電力消費を低減する省電力モードが設けられている場合がある。ノンセキュアＣＰＵ２とセッションを確立させたセキュアＣＰＵ１は、図３に示すように、省電力モードに遷移した場合、セッション鍵をＲＡＭ１２から消去してしまう。このため、セキュアＣＰＵ１が省電力モードに遷移した時点で、セキュアＣＰＵ１とノンセキュアＣＰＵ２とのセッションは切断される。【００４７】
本発明の第１実施形態では、セキュアＣＰＵ１が省電力モードに遷移してもセキュアＣＰＵ１とノンセキュアＣＰＵ２とのセッションを維持するために、図３に示す処理を実施するようにしてもよい。すなわち、セキュアＣＰＵ１は、チャレンジアンドレスポンス方式による認証のためにチャレンジ信号（乱数）をノンセキュアＣＰＵ２に送信する際、そのチャレンジ信号をＨＷ固有鍵によって暗号化したデータも併せてノンセキュアＣＰＵ２に送信しておく。または、セキュアＣＰＵ１は、省電力モードに遷移する際に、チャレンジアンドレスポンス方式による認証に用いたチャレンジ信号（乱数）をＨＷ固有鍵によって暗号化したデータをノンセキュアＣＰＵ２に送信しておく。その後、セキュアＣＰＵ１は、省電力モードから復帰したときに、ノンセキュアＣＰＵ２からＨＷ固有鍵によって暗号化したデータを取得し、そのデータをＨＷ固有鍵によって復号化し、チャレンジ信号と認証鍵からセッション鍵を生成し、生成したセッション鍵をＲＡＭ１２に記憶して、ノンセキュアＣＰＵ２とのセッションを再開することになる。【００４８】
また、セッションを維持するために、次の処理を実施するようにしてもよい。すなわち、セキュアＣＰＵ１は、省電力モードへ遷移するときに、セキュアＣＰＵ１固有のＨＷ固有鍵（セキュアＣＰＵに備わる暗号鍵）でセッション鍵を暗号化し、不揮発メモリ３に記憶しておく。その後、セキュアＣＰＵ１は、省電力モードから復帰したときに、不揮発メモリ３に記憶しておいたセッション鍵をＨＷ固有鍵で復号し、復号したセッション鍵をＲＡＭ１２に記憶して、ノンセキュアＣＰＵ２とのセッションを再開することになる。【００４９】
（第２実施形態）
本発明の第１実施形態では、セキュアＣＰＵ１が、セキュアＣＰＵ対象プログラム３１のそれぞれのプログラム及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに対する改竄検証処理をすべて担うものである。また、本発明の第１実施形態では、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して改竄検証処理を行う構成であるが、この第１改竄検証プログラムを更新することは困難である。このため、セキュアＣＰＵ１による改竄検証処理と同程度の安全性を維持しつつノンセキュアＣＰＵ２に改竄検証処理を行わせることで改竄検証処理を分業し、改竄検証処理にかかる時間を短縮すること、また、改竄検証プログラムを容易に更新すること、が望まれる。本発明の第２実施形態では、ノンセキュアＣＰＵ２に改竄検証処理を行わせることによる改竄検証処理の分業化、及び改竄検証処理時間の短縮化を実現することができる構成について説明する。図４に、本発明の第２実施形態の情報処理装置におけるハードウェアの構成図を示す。なお、図１に示した本発明の第２実施形態の情報処理装置におけるハードウェアの構成図と共通の参照符号を割り当てたハードウェアまたはプログラムの機能は、第１実施形態で説明した通りであるため、説明を省略する。【００５０】
本発明の第２実施形態の情報処理装置は、不揮発メモリ３のセキュアＣＰＵ対象プログラム３１に第２改竄検証プログラムが、ノンセキュアＣＰＵ対象プログラム３２にＴＲＳ化改竄検証プログラムが、記憶されている構成が第１実施形態と異なる。以下、図５に示す、本発明の第２実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンスを参照して、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理を説明する。【００５１】
図５のシーケンスでは、セキュアＣＰＵ１は、第１実施形態で説明した通り、セキュアモードとノンセキュアモードの二つのプロセッサモードに切り替えることができ、より高い安全性を要求される処理を実施するときは、セキュアモードにてプログラムを実行するものとする。一方、ノンセキュアＣＰＵ２は、ノンセキュアモードのみにてプログラムを実行するものとする。【００５２】
本発明の第２実施形態の情報処理装置は、電源が投入されるとまず、セキュアＣＰＵ１を起動する。セキュアＣＰＵ１は、ブートＲＯＭ１２に記憶されたＩＰＬ（Initial Program Loader）プログラムを参照して、不揮発メモリ３から最初に読み出して起動すべきプログラム（図４における、セキュアＣＰＵ対象プログラム３１の各プログラム及びノンセキュアＣＰＵ対象プログラム３２の各プログラム）の先頭アドレスを読み出す。セキュアＣＰＵ１は、ＩＰＬプログラムを参照して読み出した先頭アドレスを基に、不揮発メモリ３における改竄検証されるべきプログラムを特定し、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して改竄検証処理を実施する。【００５３】
セキュアＣＰＵ１による改竄検証処理は、次の通りである。ノンセキュアモードにより起動されたセキュアＣＰＵ１は、改竄検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、改竄検証要求を通知されると、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１のうちの、起動制御プログラム、ロードプログラム、第２改竄検証プログラ無、及び、ノンセキュアＣＰＵ対象プログラム３２のうちの、ＩＰＬプログラム、起動制御プログラム、ＴＲＳ化改竄検証プログラムに対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。改竄検証を行ったセキュアモードのセキュアＣＰＵ１は、改竄検証の結果をノンセキュアモードのセキュアＣＰＵ１に通知する。ノンセキュアモードのＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の起動制御プログラム、ロードプログラム、第２改竄検証プログラムの少なくとも一つに改竄が有りと通知されれば、それらすべてのプログラムをＲＡＭ１２に展開しない。また、ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＩＰＬプログラム、起動制御プログラム、ＴＲＳ化改竄検証プログラムの少なくとも一つに改竄が有りと通知されれば、それらのすべてのプログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開しない。【００５４】
ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１のそれぞれのプログラム、及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに改竄が無いと通知されれば、まず、不揮発メモリ３から読み出した、セキュアＣＰＵ対象プログラム３１のうちの起動制御プログラム１２１をＲＡＭ１２に展開し、その起動制御プログラムを実行する。起動制御プログラム１２１は、ＲＡＭ１２に展開するプログラムをセキュアＣＰＵ１に指示し、セキュアＣＰＵ１にそのプログラムを展開させる機能を有する。続いてノンセキュアモードのセキュアＣＰＵ１は、起動制御プログラム１２１を参照して、ロードプログラム１２２及び第２改竄検証プログラム１２４をＲＡＭ１２に展開する。セキュアＣＰＵ１による起動制御プログラム１２１、ロードプログラム１２２及び第２改竄検証プログラム１２４のＲＡＭ１２への展開が、図５における展開処理に相当する。【００５５】
ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開されたロードプログラム１２２を実行する。ロードプログラム１２２は、セキュアＣＰＵ１に、不揮発メモリ３から読み出したノンセキュアＣＰＵ対象プログラム３２をノンセキュアＣＰＵ２のＲＡＭ２１に展開させる機能を有する。このため、ロードプログラム１２２を実行したセキュアＣＰＵ１は、ノンセキュアＣＰＵ対象プログラム３２のうちの、ＩＰＬプログラム、起動制御プログラム、及びＴＲＳ化改竄検証プログラムを不揮発メモリ３から読み出し、ノンセキュアＣＰＵ２のＲＡＭ２１に展開する（図５におけるロード処理に相当する）。一方、ＲＡＭ２１にノンセキュアＣＰＵ対象プログラム３２が展開されたノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して、ＲＡＭ２１から最初に読み出して起動すべき起動制御プログラムの先頭アドレスを読み出す。ノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して読み出した起動制御プログラム２１２の先頭アドレスを基に、ＲＡＭ２１に記憶された起動制御プログラム２１２を特定し、その起動制御プログラム２１２を実行する。起動制御プログラム２１２は、ノンセキュアＣＰＵ２に実行させるプログラムを指示する機能を有する。続いてノンセキュアＣＰＵ２は、起動制御プログラム２１２を参照して特定したＴＲＳ化改竄検証プログラム２１４を実行する。【００５６】
続いて、ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開された第２改竄検証プログラム１２４を実行する。第２改竄検証プログラム１２４は、セキュアＣＰＵ対象プログラム３１に対する改竄の有無を検証する機能を有する。セキュアＣＰＵ１による改竄検証処理は、次の通りである。ノンセキュアモードにより起動されたセキュアＣＰＵ１は、改竄検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、改竄検証要求を通知されると、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１のうちの、認証プログラム、その他の各種プログラムに対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。改竄検証を行ったセキュアモードのセキュアＣＰＵ１は、改竄検証の結果をノンセキュアモードのセキュアＣＰＵ１に通知する。ノンセキュアモードのＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の認証プログラムに改竄が有りと通知されれば、その認証プログラムをＲＡＭ１２に展開しない。一方、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の認証プログラムに改竄が無しと通知されれば、ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開された認証プログラム１２３を実行する。セキュアＣＰＵ１による認証プログラム１２３を実行した場合の認証処理は、第１実施形態で説明した通りであるため、説明を省略する。【００５７】
上述のように、セキュアＣＰＵ１は、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して不揮発メモリ３に記憶された第２改竄検証プログラムに対する改竄の有無を検証し、さらに、第２改竄検証プログラムに対する改竄無しと判定した場合に、第２改竄検証プログラムを参照して不揮発メモリ３に記憶されたセキュアＣＰＵ対象プログラム３１の各種プログラムに対する改竄の有無を検証する。このため、ＲＡＭ１２に展開された第２改竄検証プログラムの安全性を第１改竄検証プログラムによる改竄検証によって保証することとなり、その結果、不揮発メモリ３に記憶された第２改竄検証プログラムを更新しても、セキュアＣＰＵ１による改竄検証処理と同程度の安全性を維持しできる。【００５８】
また、ノンセキュアＣＰＵ２は、ＲＡＭ２１に展開されたＴＲＳ化改竄検証プログラム２１４を実行する。ＴＲＳ（Tamper Resistant Software）化改竄検証プログラムは、耐タンパー化されている。このため、ＴＲＳ化改竄検証プログラム２１４は、セキュアＣＰＵ１よりも安全性の低いノンセキュアＣＰＵ２のＲＡＭ２１に展開されているといっても、安全性を高められている。ＴＲＳ化改竄検証プログラム２１４は、ノンセキュアＣＰＵ対象プログラム３２に対する改竄の有無を検証する機能を有する。ノンセキュアＣＰＵ２による改竄検証処理は、次の通りである。ノンセキュアＣＰＵ２は、不揮発メモリ３に記録されたノンセキュアＣＰＵ対象プログラム３２のうちの、ＴＲＳ化認証プログラム２１３、その他の各種プログラムに対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。ノンセキュアＣＰＵ２は、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＴＲＳ化認証プログラム２１３に改竄が有りと通知されれば、そのＴＲＳ化認証プログラム２１３をＲＡＭ２１に展開しない。一方、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＴＲＳ化認証プログラム２１３に改竄が無しと通知されれば、ノンセキュアＣＰＵ２は、ＲＡＭ２１に展開されたＴＲＳ化認証プログラム２１３を実行する。ノンセキュアＣＰＵ２によるＴＲＳ化認証プログラム２１３を実行した場合の認証処理は、第１実施形態で説明した通りであるため、説明を省略する。【００５９】
上述のように、ノンセキュアＣＰＵ２は、セキュアＣＰＵ１によって改竄無しと判定されたＴＲＳ化改竄検証プログラムを参照して、不揮発メモリ３に記憶されたノンセキュアＣＰＵ対象プログラム３２の各種プログラムに対する改竄の有無を検証する。また、ＴＲＳ化改竄検証プログラムは、耐タンパー化が施されており、コードの改竄が困難なものである。このため、セキュアＣＰＵ１による改竄検証処理と同程度の安全性を維持しつつ、ノンセキュアＣＰＵ２に改竄検証処理を行わせることで改竄検証処理にかかる時間を短縮することができる。
【産業上の利用可能性】
【００６０】
本発明の情報処理装置及び改竄検証方法によれば、セキュアＣＰＵ及びノンセキュアＣＰＵによって、プログラムの改竄を確実に検出することができるという効果を奏し、プログラムコードを実行する際に必要に応じてプロセッサモードを切り替えるプロセッサ（ＣＰＵ）を備えた情報処理装置の分野において有用である。
【図１】
2009013825.tif 000003
【図２】
2009013825.tif 000004
【図３】
2009013825.tif 000005
【図４】
2009013825.tif 000006
【図５】
2009013825.tif 000007
【手続補正書】
【提出日】平成20年11月25日(2008.11.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
第２の改竄検証プログラム及び第１のプログラムと、前記Ｎ個の第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する読取専用である改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第２の改竄検証プログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第２の改竄検証プログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記第１のＲＡＭに展開された前記第２の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第２のプログラムの改竄の有無を検証する第２の改竄検証手段と、
前記第２の改竄検証手段によって検証した結果に応じて、前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項２】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
前記第１のプログラムと、前記Ｎ個の第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する読取専用である改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第３の改竄検証プログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第３の改竄検証プログラムを参照して、前記第２のＲＡＭに展開された前記第２のプログラムの改竄の有無を検証する第３の改竄検証手段と、前記第３の改竄検証手段によって検証した結果に応じて、前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項３】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
第２の改竄検出プログラム及び第１のプログラムと、前記Ｎ個の第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する読取専用である改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第２の改竄検証プログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第２の改竄検証のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記第１のＲＡＭに展開された第２の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第３の改竄検証プログラムの改竄の有無を検証する第２の改竄検証手段と、
前記第２の改竄検証手段によって検証した結果に応じて、検証対済みの前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第３の改竄検証プログラムを参照して、前記第２のＲＡＭに出力された前記第２のプログラムの改竄の有無を検証する第３の改竄検証手段と、前記第３の改竄検証手段によって検証した結果に応じて、前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項４】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
前記第１のプログラムと、前記Ｎ個の第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第２のプログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項５】
請求項１または３に記載の情報処理装置であって、
前記第１の改竄検証プログラムを参照した前記第１の改竄検証手段による改竄検証、又は前記第２の改竄検出プログラムを参照した前記第２の改竄検出手段による改竄検証に続けて改竄検証を行う１個以上の改竄検証プログラムと１個以上の改竄検出手段を備え、改竄検出処理を多段化することを特徴とする、情報処理装置。
【請求項６】
請求項１から５のいずれかに記載の情報処理装置であって、
前記第１のプログラム起動手段は、前記第１のＲＡＭに前記プログラム記憶部に記憶された第１の認証プログラムを展開して実行することにより前記１個以上の第２のＣＰＵの認証を行い、前記ロード手段は認証に成功した当該第２のＣＰＵへ前記プログラム記憶部に記憶された当該第２のＣＰＵが実行すべき各種プログラムを出力する、情報処理装置。
【請求項７】
請求項１から６のいずれかに記載の情報処理装置であって、
前記第１のプログラム起動手段は、前記第１のＲＡＭに前記プログラム記憶部に記憶された第１の認証プログラムおよび第１のセキュアセッション確立プログラムを展開して実行することにより前記１個以上の第２のＣＰＵの認証を行い、
前記ロード手段は、前記プログラム記憶部に記憶された前記１個以上の第２の認証プログラムおよび第２のセキュアセッション確立プログラムを対応する当該第２のＲＡＭへ展開し、前記第２のプログラム起動手段は前記第２の認証プログラムを参照して前記第１のＣＰＵの認証を行い、
相互に前記認証に成功した場合、前記第１のＣＰＵは前記第１のセッション確立プログラムを実行して、対応する当該第２のセキュアセッション確立プログラムを実行する当該第２のＣＰＵとセキュアセッションを確立し、
前記ロード手段は、当該セキュアセッション上において、前記プログラム記憶部に記憶された当該第２のＣＰＵが実行すべき各種プログラムを対応する当該第２のＲＡＭに出力する情報処理装置。
【請求項８】
請求項１から７のいずれかに記載の情報処理装置であって、
前記第２の認証プログラム、前記第２のセキュアセッション確立プログラム、前記第３の改竄検出プログラム、前記第３の改竄検出手段、前記第２のプログラム起動手段のいずれかまたは全てが、耐タンパー化が施されている情報処理装置。
【請求項９】
請求項１から８のいずれかに記載の情報処理装置であって、
前記第２の認証プログラム、前記第２のセキュアセッション確立プログラム、前記第３の改竄検出プログラム、前記第３の改竄検出手段、前記第２のプログラム起動手段のいずれかまたは全てが、第１の改竄検証プログラムと第１の改竄検証手段の組または第２の改竄検証プログラムと第２の改竄検証手段の組による改竄検証後、その結果に応じて前記第２のＲＡＭへ展開される情報処理装置。
【請求項１０】
請求項６から９のいずれかに記載の情報処理装置であって、
前記認証第１のプログラム、前記第２の認証プログラム、前記第１のセキュアセッション確立プログラム、前記第２のセキュアセッション確立プログラムは、個々の第２のＣＰＵ対応したユニークな認証鍵を含む情報処理装置。
【請求項１１】
請求項１から１０のいずれかに記載の情報処理装置であって、
前記第１のＣＰＵは安全性の高い処理モードであるセキュアモードを備え、前記第１のＣＰＵが実施する前記改竄検証処理、前記認証処理の一部または全てをセキュアモードにて処理することを特徴とする、情報処理装置。
【請求項１２】
請求項６から９のいずれかに記載の情報処理装置であって、
前記第１のＣＰＵはさらに、前記第１のＣＰＵに対応する固有鍵と、省電力モードを備え、
前記第１のＣＰＵは、前記認証処理に利用した認証処理情報を前記固有鍵で暗号化した暗号化認証処理情報を生成し、省電力モード遷移前に、前記暗号化認証処理情報を前記第２のＣＰＵまたは前記第２のＲＡＭに送信し、前記第１のＣＰＵが省電力モードから復帰後、前記暗号化認証処理情報を第２ＣＰＵから受信し、前記固有鍵で前記暗号化処理認証情報を復号し、復号した認証処理情報を利用して、前記認証処理を行うことを特徴とする、情報処理装置。
【請求項１３】
請求項６から９のいずれかに記載の情報処理装置であって、
前記第１のＣＰＵはさらに、前記第１のＣＰＵに対応する固有鍵と、省電力モードを備え、
前記第１のＣＰＵは、前記認証処理に利用した認証処理情報を前記固有鍵で暗号化した暗号化認証処理情報を生成し、省電力モード遷移前に、前記暗号化認証処理情報を不揮発な暗号化認証処理情報記憶部に退避し、前記第１のＣＰＵが省電力モードから復帰後、前記暗号化認証処理情報記憶部から前記暗号化認証処理情報を読み込み、前記固有鍵で前記暗号化処理認証情報を復号し、復号した認証処理情報を利用して、前記認証処理を行うことを特徴とする、情報処理装置。
【手続補正書】
【提出日】平成21年12月8日(2009.12.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
第２の改竄検証プログラム及び第１のプログラムと、前記Ｎ個の第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する読取専用である改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第２の改竄検証プログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第２の改竄検証プログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記第１のＲＡＭに展開された前記第２の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第２のプログラムの改竄の有無を検証する第２の改竄検証手段と、
前記第２の改竄検証手段によって検証した結果に応じて、前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え、
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項２】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
前記第１のプログラムと、前記Ｎ個の第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する読取専用である改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第３の改竄検証プログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え、
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第３の改竄検証プログラムを参照して、前記第２のＲＡＭに展開された前記第２のプログラムの改竄の有無を検証する第３の改竄検証手段と、前記第３の改竄検証手段によって検証した結果に応じて、前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項３】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
第２の改竄検出プログラム及び第１のプログラムと、前記Ｎ個の第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する読取専用である改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第２の改竄検証プログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第２の改竄検証のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記第１のＲＡＭに展開された第２の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第３の改竄検証プログラムの改竄の有無を検証する第２の改竄検証手段と、
前記第２の改竄検証手段によって検証した結果に応じて、検証対済みの前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第３の改竄検証プログラム及び前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え、
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第３の改竄検証プログラムを参照して、前記第２のＲＡＭに出力された前記第２のプログラムの改竄の有無を検証する第３の改竄検証手段と、前記第３の改竄検証手段によって検証した結果に応じて、前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項４】
第１のＣＰＵと、
Ｎ（Ｎ≧１）個の第２のＣＰＵと、
前記第１のプログラムと、前記Ｎ個の第２のプログラムと、を記憶するプログラム記憶部と、
第１の改竄検証プログラムを記憶する改竄検証プログラム記憶部と、
第１のＲＡＭと、
前記Ｎ個の第２のＲＡＭと、
を備え、
前記第１のＣＰＵは、起動時に、
前記第１の改竄検証プログラムを参照して、前記第１のプログラム及び前記Ｎ個の前記第２のプログラムの改竄の有無を検証する第１の改竄検証手段と、
前記第１の改竄検証手段によって検証した結果に応じて、前記第１のプログラムを前記第１のＲＡＭに展開して実行する第１のプログラム起動手段と、
前記Ｎ個の前記第２のプログラムをそれぞれ前記Ｎ個の前記第２のＲＡＭに出力するロード手段と、
を備え、
前記第２のＣＰＵは、前記第２のＲＡＭに出力された前記第２のプログラムを実行する第２のプログラム起動手段を備える情報処理装置。
【請求項５】
請求項１または３に記載の情報処理装置であって、
前記第１の改竄検証プログラムを参照した前記第１の改竄検証手段による改竄検証、又は前記第２の改竄検出プログラムを参照した前記第２の改竄検出手段による改竄検証に続けて改竄検証を行う１個以上の改竄検証プログラムと１個以上の改竄検出手段を備え、改竄検出処理を多段化することを特徴とする、情報処理装置。
【請求項６】
請求項１から５のいずれかに記載の情報処理装置であって、
前記第１のプログラム起動手段は、前記第１のＲＡＭに前記プログラム記憶部に記憶された第１の認証プログラムを展開して実行することにより前記１個以上の第２のＣＰＵの認証を行い、前記ロード手段は認証に成功した当該第２のＣＰＵへ前記プログラム記憶部に記憶された当該第２のＣＰＵが実行すべき各種プログラムを出力する、情報処理装置。
【請求項７】
請求項１から６のいずれかに記載の情報処理装置であって、
前記第１のプログラム起動手段は、前記第１のＲＡＭに前記プログラム記憶部に記憶された第１の認証プログラムおよび第１のセキュアセッション確立プログラムを展開して実行することにより前記１個以上の第２のＣＰＵの認証を行い、
前記ロード手段は、前記プログラム記憶部に記憶された前記１個以上の第２の認証プログラムおよび第２のセキュアセッション確立プログラムを対応する当該第２のＲＡＭへ展開し、前記第２のプログラム起動手段は前記第２の認証プログラムを参照して前記第１のＣＰＵの認証を行い、
相互に前記認証に成功した場合、前記第１のＣＰＵは前記第１のセッション確立プログラムを実行して、対応する当該第２のセキュアセッション確立プログラムを実行する当該第２のＣＰＵとセキュアセッションを確立し、
前記ロード手段は、当該セキュアセッション上において、前記プログラム記憶部に記憶された当該第２のＣＰＵが実行すべき各種プログラムを対応する当該第２のＲＡＭに出力する情報処理装置。
【請求項８】
請求項１から７のいずれかに記載の情報処理装置であって、
前記第２の認証プログラム、前記第２のセキュアセッション確立プログラム、前記第３の改竄検出プログラム、前記第３の改竄検出手段、前記第２のプログラム起動手段のいずれかまたは全てが、耐タンパー化が施されている情報処理装置。
【請求項９】
請求項１から８のいずれかに記載の情報処理装置であって、
前記第２の認証プログラム、前記第２のセキュアセッション確立プログラム、前記第３の改竄検出プログラム、前記第３の改竄検出手段、前記第２のプログラム起動手段のいずれかまたは全てが、第１の改竄検証プログラムと第１の改竄検証手段の組または第２の改竄検証プログラムと第２の改竄検証手段の組による改竄検証後、その結果に応じて前記第２のＲＡＭへ展開される情報処理装置。
【請求項１０】
請求項６から９のいずれかに記載の情報処理装置であって、
前記認証第１のプログラム、前記第２の認証プログラム、前記第１のセキュアセッション確立プログラム、前記第２のセキュアセッション確立プログラムは、個々の第２のＣＰＵ対応したユニークな認証鍵を含む情報処理装置。
【請求項１１】
請求項１から１０のいずれかに記載の情報処理装置であって、
前記第１のＣＰＵは安全性の高い処理モードであるセキュアモードを備え、前記第１のＣＰＵが実施する前記改竄検証処理、前記認証処理の一部または全てをセキュアモードにて処理することを特徴とする、情報処理装置。
【請求項１２】
請求項６から９のいずれかに記載の情報処理装置であって、
前記第１のＣＰＵはさらに、前記第１のＣＰＵに対応する固有鍵と、省電力モードを備え、
前記第１のＣＰＵは、前記認証処理に利用した認証処理情報を前記固有鍵で暗号化した暗号化認証処理情報を生成し、省電力モード遷移前に、前記暗号化認証処理情報を前記第２のＣＰＵまたは前記第２のＲＡＭに送信し、前記第１のＣＰＵが省電力モードから復帰後、前記暗号化認証処理情報を第２ＣＰＵから受信し、前記固有鍵で前記暗号化処理認証情報を復号し、復号した認証処理情報を利用して、前記認証処理を行うことを特徴とする、情報処理装置。
【請求項１３】
請求項６から９のいずれかに記載の情報処理装置であって、
前記第１のＣＰＵはさらに、前記第１のＣＰＵに対応する固有鍵と、省電力モードを備え、
前記第１のＣＰＵは、前記認証処理に利用した認証処理情報を前記固有鍵で暗号化した暗号化認証処理情報を生成し、省電力モード遷移前に、前記暗号化認証処理情報を不揮発な暗号化認証処理情報記憶部に退避し、前記第１のＣＰＵが省電力モードから復帰後、前記暗号化認証処理情報記憶部から前記暗号化認証処理情報を読み込み、前記固有鍵で前記暗号化処理認証情報を復号し、復号した認証処理情報を利用して、前記認証処理を行うことを特徴とする、情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムコードを実行する際に必要に応じてプロセッサモードを切り替えるプロセッサ（ＣＰＵ）を備えた情報処理装置、その情報処理装置による改竄検証方法に関する。
【背景技術】
【０００２】
近年、セキュアプロセッサに関する研究、開発が進められている。セキュアプロセッサとは、当該プロセッサの外部で扱われるデータには暗号化（暗号鍵による暗号化、またはデジタル署名による暗号化）を施し、一方、当該プロセッサの内部では暗号化されたデータの復号化を行うことで、外部からのデータの読み取りを困難なものにすることができる
プロセッサのことを指す。以降、セキュアプロセッサが、外部からの不正な読み取りに対してデータを保護しつつ、当該データを用いてデータ処理を行うモードをセキュアモードと称し、一方、外部からの不正な読み取りに対してデータを保護せずに、当該データを用いてデータ処理を行うモードをノンセキュアモードと称する。
【０００３】
セキュアモードによってプログラムコードを実行することができるＣＰＵ（このＣＰＵを、以下、セキュアＣＰＵと称する）は、ノンセキュアモードによってのみプログラムコードを実行することができるＣＰＵ（このＣＰＵを、以下、ノンセキュアＣＰＵと称する）と比べると製造コストが大きくなってしまう。近年の情報処理装置には複数のＣＰＵを搭載したものがあるが、これら複数のＣＰＵとして、セキュアＣＰＵのみを利用するとなると、情報処理装置もまた高額なものになってしまう。このため、情報処理装置に複数のＣＰＵを搭載する場合には、セキュアＣＰＵとノンセキュアＣＰＵとを併用する構成が提案されている。
【０００４】
例えば、特許文献１には、ノンセキュアＣＰＵを搭載したＰＣと、そのＰＣに接続された、セキュアＣＰＵを搭載した保護装置と、について記載されており、保護装置によってＰＣによるブート時の改竄の有無を検証する方法について開示されている。特許文献１において、ＰＣは、電源が投入されると、ＰＣのノンセキュアＣＰＵを起動し、その後、当該ＰＣに接続された保護装置のセキュアＣＰＵを起動する。ＰＣによる制御によってセキュアＣＰＵを起動した保護装置は、ＰＣのＨＤＤに保存された暗号化された状態のプログラムを読み取り、暗号化された状態のプログラムを復号し、そのプログラムに対して耐タンパー化を施し、耐タンパー化を施したプログラムのハッシュ値を記憶し、耐タンパー化を施したプログラムをＰＣのノンセキュアＣＰＵのメモリに展開する。ＰＣのノンセキュアＣＰＵは、そのメモリに展開された耐タンパー化を施したプログラムを基に、ＯＳを起動することになる。一方、保護装置は、ＰＣのノンセキュアＣＰＵのメモリから耐タンパー化を施したプログラムを定期的に読み取り、そのプログラムのハッシュ値を計算し、記憶しておいたハッシュ値と一致するか否かによって、ＣＰＵのノンセキュアＣＰＵのメモリに展開されているプログラムが改竄されているか否かを検証する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０８５１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されている保護装置は、保護装置のセキュアＣＰＵがＰＣのＨＤＤに保存された暗号化された状態のプログラムを読み取る前に当該プログラムが改竄されてしまっていると、改竄されたプログラムを基に算出されたハッシュ値が記憶されてしまうため、以後の改竄検証処理によって、当該プログラムが改竄されていることを検出することができない。また、ＰＣのノンセキュアＣＰＵを起動した後、保護装置のセキュアＣＰＵを起動する処理工程では、ノンセキュアＣＰＵを起動する処理の安全性がセキュアＣＰＵによって保証されていないため、安全性に問題がある。
【０００７】
本発明は、上記事情に鑑みてなされたもので、セキュアＣＰＵ及びノンセキュアＣＰＵを搭載した情報処理装置であって、プログラムの改竄を確実に検出することができる情報処理装置、及びその情報処理装置による改竄検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、第２のＣＰＵよりも安全性の高いプロセッサモードにて各種プログラムを実行する第１のＣＰＵと、前記第１のＣＰＵが実行すべき各種プログラムと
、前記第２のＣＰＵが実行すべき各種プログラムと、を記憶するプログラム記憶部と、各種プログラムの改竄の有無を検証するための改竄検証プログラムを記憶する改竄検証プログラム記憶部と、第１のＲＡＭと、を備え、前記第１のＣＰＵが、前記改竄検証プログラム記憶部に記憶された改竄検証プログラムを参照して、前記プログラム記憶部に記憶された各種プログラムの改竄の有無を検証する第１の改竄検証手段と、前記第１の改竄検証手段によって検証した結果に応じて、前記プログラム記憶部に記憶された当該第１のＣＰＵが実行すべき各種プログラムを前記第１のＲＡＭに展開する第１のプログラム起動手段と、前記プログラム記憶部に記憶された前記第２のＣＰＵが実行すべき各種プログラムを前記第２のＣＰＵに出力するロード手段と、を備えるものである。
【０００９】
本発明の改竄検証方法は、第１のＣＰＵよりも安全性の高いプロセッサモードにて、各種プログラムを実行する第２のＣＰＵによって行う改竄検証方法であって、ブートメモリに記憶された改竄検証プログラムを参照して、不揮発メモリに記憶された各種プログラムの改竄の有無を検証するステップと、検証した結果に応じて、前記不揮発メモリに記憶された前記第１のＣＰＵが実行すべき各種プログラムを第１のＲＡＭに展開するステップと、前記不揮発メモリに記憶された前記第２のＣＰＵが実行すべき各種プログラムを前記第２のＣＰＵに出力するステップと、を有するものである。
【００１０】
また、本発明の情報処理装置は、前記第２のＣＰＵを備えるものを含む。
【００１１】
また、本発明の情報処理装置は、第２のＲＡＭを備え、前記第２のＣＰＵが、前記第１のＣＰＵから入力した当該第２のＣＰＵが実行すべき各種プログラムを前記第２のＲＡＭに展開する第２のプログラム起動手段を備えるものである。
【００１２】
この構成により、不揮発メモリ（プログラム記憶部）に記憶されたプログラムの改竄を確実に検出することができる。
【００１３】
また、本発明の情報処理装置は、前記第１のＣＰＵが、さらに、出力手段を備え、前記第１のプログラム起動手段が、前記第１の改竄検証手段によって検証した結果、改竄が有ることが検出されれば、前記プログラム記憶部に記憶された当該第１のＣＰＵが実行すべき各種プログラムのすべて、または当該各種プログラムのうちの改竄が有ることが検出されたプログラムを展開せず、前記出力手段が、前記第１の改竄検証手段によって検証した結果、改竄が有ることが検出されれば、改竄が有ることが検出されたことを出力する、ものを含む。
【００１４】
この構成により、プログラムの改竄が検出されたことを、情報処理装置利用者に通知することができる。
【００１５】
また、本発明の情報処理装置は、前記第１のＣＰＵが、前記第２のＣＰＵを認証する第１の認証手段を備え、前記ロード手段が、前記プログラム記憶部に記憶された前記第２のＣＰＵが実行すべき各種プログラムを、前記第１の認証手段による認証に成功した前記第２のＣＰＵに出力する、ものを含む。
【００１６】
また、本発明の情報処理装置は、前記第２のＣＰＵが、前記第１のＣＰＵを認証する第２の認証手段を備えるものを含む。
【００１７】
また、本発明の情報処理装置は、前記認証プログラムが、耐タンパー化が施されているものを含む。
【００１８】
この構成により、不揮発メモリ（プログラム記憶部）に記憶された各種プログラムを、
そのプログラムを実行すべきＣＰＵにのみ出力することができるため、認証に成功し得ない他のＣＰＵへのプログラムの漏洩を防ぐことができる。
【００１９】
また、本発明の情報処理装置は、前記第１のＣＰＵが、前記第１のプログラム起動手段が前記第１のＲＡＭに展開した改竄検証プログラムを参照して、前記プログラム記憶部に記憶された各種プログラムの改竄の有無を検証する第２の改竄検証手段を備えるものを含む。
【００２０】
この構成により、ＲＡＭ１２に展開された改竄検証プログラムの安全性をブートＲＯＭ（改竄検証プログラム記憶部）に記憶された改竄検証プログラムによる改竄検証によって保証することとなり、その結果、不揮発メモリ（プログラム記憶部）に記憶された改竄検証プログラムを更新することができる。
【００２１】
また、本発明の情報処理装置は、前記第２のＣＰＵが、前記第２のプログラム起動手段が前記第２のＲＡＭに展開した改竄検証プログラムを参照して前記第１のＣＰＵから入力した当該第２のＣＰＵが実行すべき各種プログラムの改竄の有無を検証する第３の改竄検証手段を備えるものを含む。
【００２２】
また、本発明の情報処理装置は、前記第３の改竄検証手段が、耐タンパー化が施されているものを含む。
【００２３】
この構成により、２つのＣＰＵに改竄検証処理を行わせることで改竄検証処理にかかる時間を短縮することができる。
【発明の効果】
【００２４】
本発明の情報処理装置及び改竄検証方法によれば、セキュアＣＰＵ及びノンセキュアＣＰＵによって、プログラムの改竄を確実に検出することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１実施形態の情報処理装置におけるハードウェアの構成図
【図２】本発明の第１実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンス
【図３】本発明の第１実施形態の情報処理装置による、セッション確立時の処理のシーケンス
【図４】本発明の第２実施形態の情報処理装置におけるハードウェアの構成図
【図５】本発明の第２実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンス
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態の情報処理装置について詳細に説明する。
【００２７】
（第１実施形態）
本発明の第１実施形態の情報処理装置について説明する。まず、本発明の第１実施形態の情報処理装置におけるハードウェアの構成を、図１に示す本発明の第１実施形態の情報処理装置におけるハードウェアの構成図を参照して説明する。本発明の第１実施形態の情報処理装置は、セキュアＣＰＵ１、ノンセキュアＣＰＵ２、及び不揮発メモリ３を含んで構成される。また、セキュアＣＰＵ１は、ブートＲＯＭ１１及びＲＡＭ１２を含んで構成され、ノンセキュアＣＰＵ２は、ＲＡＭ２１を含んで構成される。なお、ＲＡＭ１２及びＲＡＭ２１は同一のメモリであり、ＣＰＵ１とＣＰＵ２が使用する領域を分けることで仮想的に二つのメモリとして扱ってもよい。
【００２８】
セキュアＣＰＵ１のブートＲＯＭ１１は、読み出し専用記憶装置であり、プログラムの改竄の有無を検証するための第１改竄検証プログラムや、情報処理装置に電源が投入されたときに実行されるべきプログラム（ＩＰＬ：Initial Program Loader）を記憶している。また、セキュアＣＰＵ１は、不揮発メモリ３から読み出したセキュアＣＰＵ対象プログラム３１をセキュアＣＰＵ１のＲＡＭ１２に展開する。セキュアＣＰＵ１は、ブートＲＯＭ１１及びＲＡＭ１２に記憶または展開されているプログラムを実行する。セキュアＣＰＵ１が実行する各種処理については、後述するシーケンスを参照して説明する。
【００２９】
ノンセキュアＣＰＵ２は、セキュアＣＰＵ１が不揮発メモリ３から読み出しノンセキュアＣＰＵ２のＲＡＭ２１に展開したノンセキュアＣＰＵ対象プログラム３２を実行する。ノンセキュアＣＰＵ２が実行する各種処理については、後述するシーケンスを参照して説明する。なお、ＣＰＵ１とＣＰＵ２は異なるチップとして実装される場合と、同一チップ上に二つのコアとして実装される場合を想定する。また、ノンセキュアなＣＰＵが複数存在する場合はセキュアなＣＰＵは順次改ざん検証したプログラムをノンセキュアなＣＰＵへロードすることも可能である。
【００３０】
不揮発メモリ３には、セキュアＣＰＵ１が実行すべきセキュアＣＰＵ対象プログラム３１（起動制御プログラム、ロードプログラム、認証プログラム、及びその他各種プログラム）、及びノンセキュアＣＰＵ２が実行すべきノンセキュアＣＰＵ対象プログラム３２（ＩＰＬプログラム、起動制御プログラム、ＴＲＳ化認証プログラム、及びその他各種プログラム）が記憶されている。以下、図２に示す、本発明の第１実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンスを参照して、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理を説明する。
【００３１】
図２のシーケンスでは、セキュアＣＰＵ１は、セキュアモードとノンセキュアモードの二つのプロセッサモードに切り替えることができ、より高い安全性を要求される処理を実施するときは、セキュアモードにてプログラムを実行するものとする。一方、ノンセキュアＣＰＵ２は、ノンセキュアモードのみにてプログラムを実行するものとする。
【００３２】
本発明の第１実施形態の情報処理装置は、電源が投入されるとまず、セキュアＣＰＵ１を起動する。セキュアＣＰＵ１は、ブートＲＯＭ１１に記憶されたＩＰＬ（Initial Program Loader）プログラムを参照して、不揮発メモリ３から最初に読み出して起動すべきプログラム（図１における、セキュアＣＰＵ対象プログラム３１の各プログラム及びノンセキュアＣＰＵ対象プログラム３２の各プログラム）の先頭アドレスを読み出す。セキュアＣＰＵ１は、ＩＰＬプログラムを参照して読み出した先頭アドレスを基に、不揮発メモリ３における改竄検証されるべきプログラムを特定し、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して改竄検証処理を実施する。セキュアＣＰＵ１によって改竄検証処理を実施することにより、ノンセキュアＣＰＵ２による同様の改竄検証処理よりも安全性を高めることができる。また、電源投入時にセキュアＣＰＵ１をまず起動することによって、その後起動するノンセキュアＣＰＵ２による処理の安全性をセキュアＣＰＵ１によって保証することができる。
【００３３】
セキュアＣＰＵ１による改竄検証処理は、次の通りである。ノンセキュアモードにより起動されたセキュアＣＰＵ１は、改竄検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、改竄検証要求を通知されると、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１のそれぞれのプログラム（起動制御プログラム、ロードプログラム、認証プログラム、及びその他各種プログラム）及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラム（ＩＰＬプログラム、起動制御プログラム、ＴＲＳ化認証プログラム、及びその他各種プログラム）に対して、改竄
検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。改竄検証を行ったセキュアモードのセキュアＣＰＵ１は、改竄検証の結果をノンセキュアモードのセキュアＣＰＵ１に通知する。ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の起動制御プログラム、ロードプログラム、認証プログラムの少なくとも一つに改竄が有りと通知されれば、それらすべてのプログラムをＲＡＭ１２に展開しない。なお、ＲＡＭにはプログラムを展開しておき、実行のみを禁止することも可能である。展開しない場合、エラーを表示またはＬＥＤを点滅するなどしてユーザに通知することも可能である。また、ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＩＰＬプログラム、起動制御プログラム、ＴＲＳ化認証プログラムの少なくとも一つに改竄が有りと通知されれば、それらのすべてのプログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開しない。このように、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１とノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに対して、セキュアＣＰＵ１が改竄検証処理を実施することにより、ノンセキュアＣＰＵ２による同様の改竄検証処理よりも安全性を高めることができ、また、プログラムの改竄を確実に検出することができる。なお、本実施例ではノンセキュアモードのセキュアＣＰＵ１から起動が開始しているが、より安全性を向上するためセキュアモードのノンセキュアＣＰＵ２から起動を行なっても構わない。
【００３４】
ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１のそれぞれのプログラム、及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに改竄が無いと通知されれば、まず、不揮発メモリ３から読み出した、セキュアＣＰＵ対象プログラム３１のうちの起動制御プログラム１２１をＲＡＭ１２に展開し、その起動制御プログラムを実行する。起動制御プログラム１２１は、ＲＡＭ１２に展開するプログラムをセキュアＣＰＵ１に指示し、セキュアＣＰＵ１にそのプログラムを展開させる機能を有する。続いてノンセキュアモードのセキュアＣＰＵ１は、起動制御プログラム１２１を参照して、ロードプログラム１２２及び認証プログラム１２３をＲＡＭ１２に展開する。セキュアＣＰＵ１による起動制御プログラム１２１、ロードプログラム１２２及び認証プログラム１２３のＲＡＭ１２への展開が、図２における展開処理に相当する。
【００３５】
ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開されたロードプログラム１２２を実行する。ロードプログラム１２２は、セキュアＣＰＵ１に、不揮発メモリ３から読み出したノンセキュアＣＰＵ対象プログラム３２をノンセキュアＣＰＵ２のＲＡＭ２１に展開させる機能を有する。このため、ロードプログラム１２２を実行したセキュアＣＰＵ１は、ノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラム（ＩＰＬプログラム、起動制御プログラム、及びＴＲＳ化認証プログラム）を不揮発メモリ３から読み出し、ノンセキュアＣＰＵ２のＲＡＭ２１に展開する（図２におけるロード処理に相当する）。一方、ＲＡＭ２１にノンセキュアＣＰＵ対象プログラム３２が展開されたノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して、ＲＡＭ２１から最初に読み出して起動すべき起動制御プログラムの先頭アドレスを読み出す。ノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して読み出した起動制御プログラム２１２の先頭アドレスを基に、ＲＡＭ２１に記憶された起動制御プログラム２１２を特定し、その起動制御プログラム２１２を実行する。起動制御プログラム２１２は、ノンセキュアＣＰＵ２に実行させるプログラムを指示する機能を有する。続いてノンセキュアＣＰＵ２は、起動制御プログラム２１２を参照して特定したＴＲＳ化認証プログラム２１３を実行する。
【００３６】
続いて、ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開された認証プログラム１２３を実行する。認証プログラム１２３は、セキュアＣＰＵ１が、ノンセキュアＣＰＵ２を認証する機能を有する。本発明の実施の形態では、セキュアＣＰＵ１は、チャ
レンジアンドレスポンス方式に則って、ノンセキュアＣＰＵ２との間で認証を行うものとする。セキュアＣＰＵ１は、ノンセキュアＣＰＵ２が実行すべきノンセキュアＣＰＵ対象プログラム３２のその他各種プログラムを、ノンセキュアＣＰＵ２のＲＡＭ２１のみに展開する必要があるため、通信中のＣＰＵがノンセキュアＣＰＵ２であることを予め認証しておかなければならない。認証プログラム１２３実行時の認証処理の流れとしては、セキュアＣＰＵ１は、乱数を生成し、その乱数値を保存し、その乱数値をチャレンジ信号としてノンセキュアＣＰＵ２に送信する（あるいは、ノンセキュアＣＰＵ２と共通の認証鍵によって暗号化した乱数値をチャレンジ信号としてノンセキュアＣＰＵ２に送信する）。ノンセキュアＣＰＵ２は、そのチャレンジ信号と認証鍵（この認証鍵は、ＴＲＳ（Tamper Resistant Software）化認証プログラムにデータとして格納されている。なお、ＴＲＳ化
認証プログラムは、耐タンパー化されているため、認証鍵もまた保護される。）とからレスポンス信号を生成し、そのレスポンス信号をセキュアＣＰＵ１に返信する（あるいは、そのチャレンジ信号を認証鍵によって復号化したレスポンス信号をセキュアＣＰＵ１に返信する）。セキュアＣＰＵ１は、保存しておいた乱数値と、ノンセキュアＣＰＵ２と共通の認証鍵によって上記レスポンス信号を復号した数値とを比較することによって（あるいは、保存しておいた乱数値と、レスポンス信号を比較することによって）、ノンセキュアＣＰＵ２との認証成功、または認証失敗を判定する。なお、上述した認証処理の流れにおけるセキュアＣＰＵ１とノンセキュアＣＰＵ２との役割を入れ替え、ノンセキュアＣＰＵ２がセキュアＣＰＵ１を認証するようにしてもよいし、セキュアＣＰＵ１及びノンセキュアＣＰＵ２が、相互に認証するようにしてもよい。
【００３７】
本発明の第１実施形態では、セキュアＣＰＵ１がノンセキュアＣＰＵ２を認証する場合について説明する。ノンセキュアモードのセキュアＣＰＵ１は、乱数要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、乱数要求を通知されると、乱数を生成し、その乱数値をチャレンジ信号としてノンセキュアモードのセキュアＣＰＵ１に返す。セキュアモードのセキュアＣＰＵ１によって乱数を発生させることにより、ノンセキュアＣＰＵ２との認証処理の安全性を向上させることができる。また、セキュアＣＰＵ１は、上述したロード処理よりも前に、チャレンジ信号を生成しておき、ロード処理時に、ノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開するとともに、生成しておいたチャレンジ信号を送信するようにする。セキュアＣＰＵ１がロード処理時にチャレンジ信号をノンセキュアＣＰＵ２に送信することにより、セキュアＣＰＵ１とノンセキュアＣＰＵ２との通信工程を減らすことができる。
【００３８】
ノンセキュアＣＰＵ２は、ＴＲＳ化認証プログラム２１３を実行すると、ロード処理時にセキュアＣＰＵ１から受信したチャレンジ信号と認証鍵とからレスポンス信号を生成し、そのレスポンス信号をセキュアＣＰＵ１に返信する。
【００３９】
ノンセキュアモードのセキュアＣＰＵ１は、レスポンス信号をノンセキュアＣＰＵ２から受信すると、レスポンス信号を検証するよう要求する検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、検証要求を通知されると、保存しておいた乱数値とレスポンス信号と認証鍵とから、ノンセキュアＣＰＵ２との認証成功、または認証失敗を判定し、その判定の結果をノンセキュアモードのＣＰＵ１に返す。ノンセキュアモードのＣＰＵ１は、その判定の結果をノンセキュアＣＰＵ２に送信する。
【００４０】
ノンセキュアモードのセキュアＣＰＵ１は、認証成功と判定すれば、起動制御プログラム１２１を参照して、セキュアＣＰＵ対象プログラム３１のその他各種プログラムをＲＡＭ１２に展開し、そのプログラムを実行する（展開処理）。また、ノンセキュアモードのセキュアＣＰＵ１は、ロードプログラム１２２を実行し、ノンセキュアＣＰＵ対象プログ
ラム３２のその他各種プログラムを不揮発メモリ３から読み出し、ノンセキュアＣＰＵ２のＲＡＭ２１に展開する（ロード処理）。一方、認証失敗と判定すれば、セキュアＣＰＵ対象プログラム３１のその他各種プログラムをＲＡＭ１２に展開せず、また、ノンセキュアＣＰＵ対象プログラム３２のその他各種プログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開しない。
【００４１】
以上、本発明の第１実施形態の情報処理装置によれば、セキュアＣＰＵ１によって改竄検証処理を実施することにより、ノンセキュアＣＰＵ２による同様の改竄検証処理よりも安全性を高めることができる。また、電源投入時にセキュアＣＰＵ１をまず起動することによって、ノンセキュアＣＰＵ２を起動する処理の安全性をセキュアＣＰＵによって保証することができ、また、プログラムの改竄を確実に検出することができる。
【００４２】
ところで、セキュアＣＰＵ１が、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時、チャレンジアンドレスポンス方式に則ってノンセキュアＣＰＵ２を認証することは、上述した通りである。セキュアＣＰＵ１とノンセキュアＣＰＵ２は、認証に成功した後、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間で次に説明するセッション確立処理を実施してもよい。図３に、本発明の第１実施形態の情報処理装置による、セッション確立時の処理のシーケンスを示す。
【００４３】
ノンセキュアモードのセキュアＣＰＵ１は、ノンセキュアＣＰＵ２との認証に成功した後、セッション鍵を生成するよう要求するセッション鍵生成要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、セッション鍵生成要求を通知されると、チャレンジアンドレスポンス方式の認証時に用いた認証鍵と乱数（チャレンジ信号）から、セッション鍵を生成する。同じく、ノンセキュアＣＰＵ２は、セキュアＣＰＵ１との認証に成功した後、チャレンジアンドレスポンス方式の認証時に用いた認証鍵と乱数（チャレンジ信号）から、セッション鍵を生成する。
【００４４】
ノンセキュアモードのセキュアＣＰＵ１は、セッション鍵を生成した後、ノンセキュアＣＰＵ２にメッセージを送信する場合には、セッション鍵による当該メッセージの暗号化、及び、その暗号化したメッセージとセッション鍵とによるＨＭＡＣの生成、をセキュアモードのセキュアＣＰＵ１に要求する。他方、ノンセキュアＣＰＵ２からメッセージを受信した場合には、セッション鍵による受信したメッセージの復号化、及び、その受信したメッセージに添付されているＨＭＡＣの検証を、セキュアモードのセキュアＣＰＵ１に要求する。ノンセキュアモードのセキュアＣＰＵ１は、セキュアモードのセキュアＣＰＵ１から暗号化されたメッセージ、及び生成されたＨＭＡＣを受け取ると、そのメッセージにそのＨＭＡＣを添付して、ノンセキュアＣＰＵ２に送信する。他方、セキュアモードのセキュアＣＰＵ１から復号化されたメッセージ、及びＨＭＡＣによる認証に成功した旨の通知を受け取ると、そのメッセージに応じた処理を実施する。同じく、ノンセキュアＣＰＵ２は、セッション鍵を生成した後、セキュアＣＰＵ１にメッセージを送信する場合には、セッション鍵による当該メッセージの暗号化、及び、その暗号化したメッセージとセッション鍵とによるＨＭＡＣの生成、を行い、そのメッセージにそのＨＭＡＣを添付して、セキュアＣＰＵ１に送信する。他方、セキュアＣＰＵ１からメッセージを受信した場合には、セッション鍵による受信したメッセージの復号化、及び、その受信したメッセージに添付されているＨＭＡＣの検証を、行い、ＨＭＡＣによる認証に成功した旨の通知を受け取ると、そのメッセージに応じた処理を実施する。
【００４５】
このように、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間でのメッセージのやりとりをセッション鍵とＨＭＡＣを利用して行うことにより、秘匿性を向上させることができ、その結果、ノンセキュアＣＰＵ２からのメッセージの漏洩を防止することができる。なお、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間において、所定の時間間隔でチャレ
ンジアンドレスポンス方式による認証を行ってもよいが、一旦セキュアＣＰＵ１とノンセキュアＣＰＵ２との間でセッションを確立させた後は、チャレンジアンドレスポンス方式による認証の代わりに、セッション鍵とＨＭＡＣを利用した認証を用いるようにしてもよい。これにより、セキュアＣＰＵ１とノンセキュアＣＰＵ２との間での認証にかかる時間を短縮することができる。
【００４６】
ところで、セキュアＣＰＵ１には、プロセッサモードの一つとして、処理に伴う電力消費を低減する省電力モードが設けられている場合がある。ノンセキュアＣＰＵ２とセッションを確立させたセキュアＣＰＵ１は、図３に示すように、省電力モードに遷移した場合、セッション鍵をＲＡＭ１２から消去してしまう。このため、セキュアＣＰＵ１が省電力モードに遷移した時点で、セキュアＣＰＵ１とノンセキュアＣＰＵ２とのセッションは切断される。
【００４７】
本発明の第１実施形態では、セキュアＣＰＵ１が省電力モードに遷移してもセキュアＣＰＵ１とノンセキュアＣＰＵ２とのセッションを維持するために、図３に示す処理を実施するようにしてもよい。すなわち、セキュアＣＰＵ１は、チャレンジアンドレスポンス方式による認証のためにチャレンジ信号（乱数）をノンセキュアＣＰＵ２に送信する際、そのチャレンジ信号をＨＷ固有鍵によって暗号化したデータも併せてノンセキュアＣＰＵ２に送信しておく。または、セキュアＣＰＵ１は、省電力モードに遷移する際に、チャレンジアンドレスポンス方式による認証に用いたチャレンジ信号（乱数）をＨＷ固有鍵によって暗号化したデータをノンセキュアＣＰＵ２に送信しておく。その後、セキュアＣＰＵ１は、省電力モードから復帰したときに、ノンセキュアＣＰＵ２からＨＷ固有鍵によって暗号化したデータを取得し、そのデータをＨＷ固有鍵によって復号化し、チャレンジ信号と認証鍵からセッション鍵を生成し、生成したセッション鍵をＲＡＭ１２に記憶して、ノンセキュアＣＰＵ２とのセッションを再開することになる。
【００４８】
また、セッションを維持するために、次の処理を実施するようにしてもよい。すなわち、セキュアＣＰＵ１は、省電力モードへ遷移するときに、セキュアＣＰＵ１固有のＨＷ固有鍵（セキュアＣＰＵに備わる暗号鍵）でセッション鍵を暗号化し、不揮発メモリ３に記憶しておく。その後、セキュアＣＰＵ１は、省電力モードから復帰したときに、不揮発メモリ３に記憶しておいたセッション鍵をＨＷ固有鍵で復号し、復号したセッション鍵をＲＡＭ１２に記憶して、ノンセキュアＣＰＵ２とのセッションを再開することになる。
【００４９】
（第２実施形態）
本発明の第１実施形態では、セキュアＣＰＵ１が、セキュアＣＰＵ対象プログラム３１のそれぞれのプログラム及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに対する改竄検証処理をすべて担うものである。また、本発明の第１実施形態では、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して改竄検証処理を行う構成であるが、この第１改竄検証プログラムを更新することは困難である。このため、セキュアＣＰＵ１による改竄検証処理と同程度の安全性を維持しつつノンセキュアＣＰＵ２に改竄検証処理を行わせることで改竄検証処理を分業し、改竄検証処理にかかる時間を短縮すること、また、改竄検証プログラムを容易に更新すること、が望まれる。本発明の第２実施形態では、ノンセキュアＣＰＵ２に改竄検証処理を行わせることによる改竄検証処理の分業化、及び改竄検証処理時間の短縮化を実現することができる構成について説明する。図４に、本発明の第２実施形態の情報処理装置におけるハードウェアの構成図を示す。なお、図１に示した本発明の第２実施形態の情報処理装置におけるハードウェアの構成図と共通の参照符号を割り当てたハードウェアまたはプログラムの機能は、第１実施形態で説明した通りであるため、説明を省略する。
【００５０】
本発明の第２実施形態の情報処理装置は、不揮発メモリ３のセキュアＣＰＵ対象プログ
ラム３１に第２改竄検証プログラムが、ノンセキュアＣＰＵ対象プログラム３２にＴＲＳ化改竄検証プログラムが、記憶されている構成が第１実施形態と異なる。以下、図５に示す、本発明の第２実施形態の情報処理装置による、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理のシーケンスを参照して、セキュアＣＰＵ及びノンセキュアＣＰＵ起動時の処理を説明する。
【００５１】
図５のシーケンスでは、セキュアＣＰＵ１は、第１実施形態で説明した通り、セキュアモードとノンセキュアモードの二つのプロセッサモードに切り替えることができ、より高い安全性を要求される処理を実施するときは、セキュアモードにてプログラムを実行するものとする。一方、ノンセキュアＣＰＵ２は、ノンセキュアモードのみにてプログラムを実行するものとする。
【００５２】
本発明の第２実施形態の情報処理装置は、電源が投入されるとまず、セキュアＣＰＵ１を起動する。セキュアＣＰＵ１は、ブートＲＯＭ１１に記憶されたＩＰＬ（Initial Program Loader）プログラムを参照して、不揮発メモリ３から最初に読み出して起動すべきプログラム（図４における、セキュアＣＰＵ対象プログラム３１の各プログラム及びノンセキュアＣＰＵ対象プログラム３２の各プログラム）の先頭アドレスを読み出す。セキュアＣＰＵ１は、ＩＰＬプログラムを参照して読み出した先頭アドレスを基に、不揮発メモリ３における改竄検証されるべきプログラムを特定し、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して改竄検証処理を実施する。
【００５３】
セキュアＣＰＵ１による改竄検証処理は、次の通りである。ノンセキュアモードにより起動されたセキュアＣＰＵ１は、改竄検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、改竄検証要求を通知されると、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１のうちの、起動制御プログラム、ロードプログラム、第２改竄検証プログラ無、及び、ノンセキュアＣＰＵ対象プログラム３２のうちの、ＩＰＬプログラム、起動制御プログラム、ＴＲＳ化改竄検証プログラムに対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。改竄検証を行ったセキュアモードのセキュアＣＰＵ１は、改竄検証の結果をノンセキュアモードのセキュアＣＰＵ１に通知する。ノンセキュアモードのＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の起動制御プログラム、ロードプログラム、第２改竄検証プログラムの少なくとも一つに改竄が有りと通知されれば、それらすべてのプログラムをＲＡＭ１２に展開しない。また、ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＩＰＬプログラム、起動制御プログラム、ＴＲＳ化改竄検証プログラムの少なくとも一つに改竄が有りと通知されれば、それらのすべてのプログラムをノンセキュアＣＰＵ２のＲＡＭ２１に展開しない。
【００５４】
ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１のそれぞれのプログラム、及びノンセキュアＣＰＵ対象プログラム３２のそれぞれのプログラムに改竄が無いと通知されれば、まず、不揮発メモリ３から読み出した、セキュアＣＰＵ対象プログラム３１のうちの起動制御プログラム１２１をＲＡＭ１２に展開し、その起動制御プログラムを実行する。起動制御プログラム１２１は、ＲＡＭ１２に展開するプログラムをセキュアＣＰＵ１に指示し、セキュアＣＰＵ１にそのプログラムを展開させる機能を有する。続いてノンセキュアモードのセキュアＣＰＵ１は、起動制御プログラム１２１を参照して、ロードプログラム１２２及び第２改竄検証プログラム１２４をＲＡＭ１２に展開する。セキュアＣＰＵ１による起動制御プログラム１２１、ロードプログラム１２２及び第２改竄検証プログラム１２４のＲＡＭ１２への展開が、図５における展開処理に相当する。
【００５５】
ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開されたロードプログラム１２２を実行する。ロードプログラム１２２は、セキュアＣＰＵ１に、不揮発メモリ３から読み出したノンセキュアＣＰＵ対象プログラム３２をノンセキュアＣＰＵ２のＲＡＭ２１に展開させる機能を有する。このため、ロードプログラム１２２を実行したセキュアＣＰＵ１は、ノンセキュアＣＰＵ対象プログラム３２のうちの、ＩＰＬプログラム、起動制御プログラム、及びＴＲＳ化改竄検証プログラムを不揮発メモリ３から読み出し、ノンセキュアＣＰＵ２のＲＡＭ２１に展開する（図５におけるロード処理に相当する）。一方、ＲＡＭ２１にノンセキュアＣＰＵ対象プログラム３２が展開されたノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して、ＲＡＭ２１から最初に読み出して起動すべき起動制御プログラムの先頭アドレスを読み出す。ノンセキュアＣＰＵ２は、ＩＰＬプログラム２１１を参照して読み出した起動制御プログラム２１２の先頭アドレスを基に、ＲＡＭ２１に記憶された起動制御プログラム２１２を特定し、その起動制御プログラム２１２を実行する。起動制御プログラム２１２は、ノンセキュアＣＰＵ２に実行させるプログラムを指示する機能を有する。続いてノンセキュアＣＰＵ２は、起動制御プログラム２１２を参照して特定したＴＲＳ化改竄検証プログラム２１４を実行する。
【００５６】
続いて、ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開された第２改竄検証プログラム１２４を実行する。第２改竄検証プログラム１２４は、セキュアＣＰＵ対象プログラム３１に対する改竄の有無を検証する機能を有する。セキュアＣＰＵ１による改竄検証処理は、次の通りである。ノンセキュアモードにより起動されたセキュアＣＰＵ１は、改竄検証要求をセキュアモードのセキュアＣＰＵ１に通知する。セキュアモードのセキュアＣＰＵ１は、改竄検証要求を通知されると、不揮発メモリ３に記録されたセキュアＣＰＵ対象プログラム３１のうちの、認証プログラム、その他の各種プログラムに対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。改竄検証を行ったセキュアモードのセキュアＣＰＵ１は、改竄検証の結果をノンセキュアモードのセキュアＣＰＵ１に通知する。ノンセキュアモードのセキュアＣＰＵ１は、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の認証プログラムに改竄が有りと通知されれば、その認証プログラムをＲＡＭ１２に展開しない。一方、改竄検証の結果として、セキュアＣＰＵ対象プログラム３１の認証プログラムに改竄が無しと通知されれば、ノンセキュアモードのセキュアＣＰＵ１は、ＲＡＭ１２に展開された認証プログラム１２３を実行する。セキュアＣＰＵ１による認証プログラム１２３を実行した場合の認証処理は、第１実施形態で説明した通りであるため、説明を省略する。
【００５７】
上述のように、セキュアＣＰＵ１は、ブートＲＯＭ１１に記憶された第１改竄検証プログラムを参照して不揮発メモリ３に記憶された第２改竄検証プログラムに対する改竄の有無を検証し、さらに、第２改竄検証プログラムに対する改竄無しと判定した場合に、第２改竄検証プログラムを参照して不揮発メモリ３に記憶されたセキュアＣＰＵ対象プログラム３１の各種プログラムに対する改竄の有無を検証する。このため、ＲＡＭ１２に展開された第２改竄検証プログラムの安全性を第１改竄検証プログラムによる改竄検証によって保証することとなり、その結果、不揮発メモリ３に記憶された第２改竄検証プログラムを更新しても、セキュアＣＰＵ１による改竄検証処理と同程度の安全性を維持しできる。
【００５８】
また、ノンセキュアＣＰＵ２は、ＲＡＭ２１に展開されたＴＲＳ化改竄検証プログラム２１４を実行する。ＴＲＳ（Tamper Resistant Software）化改竄検証プログラムは、耐
タンパー化されている。このため、ＴＲＳ化改竄検証プログラム２１４は、セキュアＣＰＵ１よりも安全性の低いノンセキュアＣＰＵ２のＲＡＭ２１に展開されているといっても、安全性を高められている。ＴＲＳ化改竄検証プログラム２１４は、ノンセキュアＣＰＵ対象プログラム３２に対する改竄の有無を検証する機能を有する。ノンセキュアＣＰＵ２による改竄検証処理は、次の通りである。ノンセキュアＣＰＵ２は、不揮発メモリ３に記
録されたノンセキュアＣＰＵ対象プログラム３２のうちの、ＴＲＳ化認証プログラム２１３、その他の各種プログラムに対して、改竄検証を行う。改竄検証の手法としては、デジタル署名を用いる手法、ＨＭＡＣを用いる手法など、既に知られている改竄検証を適用する。ノンセキュアＣＰＵ２は、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＴＲＳ化認証プログラム２１３に改竄が有りと通知されれば、そのＴＲＳ化認証プログラム２１３をＲＡＭ２１に展開しない。一方、改竄検証の結果として、ノンセキュアＣＰＵ対象プログラム３２のＴＲＳ化認証プログラム２１３に改竄が無しと通知されれば、ノンセキュアＣＰＵ２は、ＲＡＭ２１に展開されたＴＲＳ化認証プログラム２１３を実行する。ノンセキュアＣＰＵ２によるＴＲＳ化認証プログラム２１３を実行した場合の認証処理は、第１実施形態で説明した通りであるため、説明を省略する。
【００５９】
上述のように、ノンセキュアＣＰＵ２は、セキュアＣＰＵ１によって改竄無しと判定されたＴＲＳ化改竄検証プログラムを参照して、不揮発メモリ３に記憶されたノンセキュアＣＰＵ対象プログラム３２の各種プログラムに対する改竄の有無を検証する。また、ＴＲＳ化改竄検証プログラムは、耐タンパー化が施されており、コードの改竄が困難なものである。このため、セキュアＣＰＵ１による改竄検証処理と同程度の安全性を維持しつつ、ノンセキュアＣＰＵ２に改竄検証処理を行わせることで改竄検証処理にかかる時間を短縮することができる。
【産業上の利用可能性】
【００６０】
本発明の情報処理装置及び改竄検証方法によれば、セキュアＣＰＵ及びノンセキュアＣＰＵによって、プログラムの改竄を確実に検出することができるという効果を奏し、プログラムコードを実行する際に必要に応じてプロセッサモードを切り替えるプロセッサ（ＣＰＵ）を備えた情報処理装置の分野において有用である。
【符号の説明】
【００６１】
１  セキュアＣＰＵ
１１  ブートＲＯＭ
１１１  第１改竄検証プログラム
１１２  ＩＰＬプログラム
１２  ＲＡＭ
１２１  起動制御プログラム
１２２  ロードプログラム
１２３  認証プログラム
１２４  第２改竄検証プログラム
２  ノンセキュアＣＰＵ
２１  ＲＡＭ
２１１  ＩＰＬプログラム
２１２  起動制御プログラム
２１３  ＴＲＳ化認証プログラム
２１４  ＴＲＳ化改竄検証プログラム
３  不揮発メモリ
３１  セキュアＣＰＵ対象プログラム
３２  ノンセキュアＣＰＵ対象プログラム
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009013825.tif 000008
【図２】
2009013825.tif 000009
【図３】
2009013825.tif 000010
【図４】
2009013825.tif 000011
【図５】
2009013825.tif 000012
【国際調査報告】
2009013825.tif 000013
2009013825.tif 000014