(57)【要約】【課題】ソフトウエアの実行負荷に合わせた改竄検査を可能にする。【解決手段】負荷監視部１５５１は、ソフトウエアの所定の処理単位毎に、アーキテクチャ情報ファイル１５５４の記録情報に基づいて推定した仮想処理時間と実処理時間とを比較し、実処理時間が仮想処理時間よりも十分短い場合に、検査部１５５２にエミュレーション中の検査を許容する。検査部１５５２は、ハッシュ管理部１５５３で管理している固有のハッシュ値を用いてソフトウエアの改竄検査を行う。【選択図】図４
2008129800.tif 000002
【特許請求の範囲】
【請求項１】
処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段と、
前記ソフトウエアに対する改竄の有無を検査する検査手段と、
前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、
前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段とを有する、
ソフトウエアの改竄検査装置。
【請求項２】
前記ソフトウエアは、それ自体で流通可能な可搬性の記録媒体に記録された、前記実行手段が実行可能な少なくとも一つの処理プログラムとコンテンツデータとを含むものであり、
前記負荷監視手段は、前記仮想処理又は前記実処理の内容に関わらず、前記記録媒体から読み込まれるものが処理プログラムかコンテンツデータかによって異なる所定の確率で、前記検査を許容する、
請求項１記載の改竄検査装置。
【請求項３】
前記負荷監視手段は、前記記録媒体からの読込動作が複数の処理単位にわたって継続するときは、前記コンテンツデータについて割り当てられた確率で、前記検査を許容する、
請求項２記載の改竄検査装置。
【請求項４】
前記負荷監視手段は、前記実行手段がシークした先頭セクタでは、前記処理プログラムに割り当てられた確率で、前記検査を許容する、
請求項２記載の改竄検査装置。
【請求項５】
前記負荷監視手段は、前記アーキテクチャ情報に基づいて当該処理単位の仮想処理時間を推定するとともに、推定した仮想処理時間と前記実行手段における実処理時間とを比較し、前記実処理時間が前記仮想処理時間よりも短いことを検出したときに、前記検査を許容する、
請求項１記載の改竄検査装置。
【請求項６】
前記負荷監視手段は、前記仮想処理時間と前記実処理との差分の時間における前記検査を許容する、
請求項５記載の改竄検査装置。
【請求項７】
前記検査手段は、自己用に個性化されたハッシュ値及びこのハッシュ値を導出するためのハッシュ関数を保持するとともに、前記ソフトウエアに前記ハッシュ関数を適用して当該ソフトウエアのハッシュ値を導出し、導出したハッシュ値と保持されているハッシュ値とを比較してその同一性の有無を判定することにより前記検査を行う、
請求項１乃至６のいずれかの項記載の改竄検査装置。
【請求項８】
それ自体で流通可能な可搬性の記録媒体に記録されているソフトウエアを実行する実行手段と、
前記ソフトウエアに対する改竄の有無を検査する検査手段と、
前記ソフトウエアの実行が予定される装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、
前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、前記ソフトウエアの実行環境での前記検査手段による検査を許容できるかどうかを決定する負荷監視手段とを有する、
ソフトウエアの改竄検査装置。
【請求項９】
第２処理装置に読み込まれて使用されるソフトウエアを、前記第２処理装置とは異なるアーキテクチャの第１処理装置が電子的手段によって取得する過程と、
前記ソフトウエアを取得した第１処理装置が、当該ソフトウエアのエミュレーションを自己のアーキテクチャのもとで実行するとともに、前記ソフトウエアの所定の処理単位毎に、予め保持されている前記第２処理装置のアーキテクチャの内容を表すアーキテクチャ情報に基づいて推定した仮想処理の内容と前記エミュレーションの実処理の内容とを比較することにより、エミュレーション中の検査を許容可能かどうかを決定し、許容できるときに、前記ソフトウエアに対する改竄の有無を検査する過程とを含む、
ソフトウエアの改竄検査方法。
【請求項１０】
コンピュータを、処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段、
前記ソフトウエアに対する改竄の有無を検査する検査手段、
前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段、
前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段、として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばある処理装置用に作成されたソフトウエアを、アーキテクチャが異なる他の処理装置上でエミュレーションする際に、ソフトウエアが元の内容から改竄されているかどうかを、エミュレーションの実行負荷を考慮しながら検査する改竄検査技術に関する。
【背景技術】
【０００２】
第１処理装置上で、その第１処理装置とは異なる第２処理装置のアーキテクチャを実現して当該第２処理装置用のソフトウエアを使用することをエミュレーションといい、このエミュレーションを可能にする第１処理装置用のソフトウエア又はファームウエアをエミュレータという。エミュレータは、例えば第１処理装置のプロセッサが読み取り可能な領域に予め格納される。他方、第２処理装置用のソフトウエア、すなわち複数の処理プログラム及びコンテンツデータは、第１処理装置が読み取り可能なメモリデバイスに格納して提供される。
【０００３】
このメモリデバイスに対するセキュリティ対策が不十分の場合、例えば、第２処理装置用のソフトウエアが公衆通信網を通じてユーザのパーソナルコンピュータ（以下、「ＰＣ」と称する）等に配信され、ユーザの手によって市販のメモリデバイスに格納される場合、当該ソフトウエアが悪意の者によって改竄される可能性がある。そのため、エミュレータ側に、ソフトウエアの改竄検査機能を付加する場合がある。
【０００４】
ソフトウエアの改竄検査には電子透かし等の手法も存在するが、ソフトウエアのサイズが比較的大きいときの改竄検査の手法としては、格納時と読み取り時とのハッシュ値の同一性を比較するハッシュ法を用いるのが一般的である。例えば、特開２００４−３４２０４６号公報に記載されているソフトウエア認証方法では、ソフトウエアの実行開始から終了までの全期間にわたって、随時、ソフトウエア及びハードウエアのそれぞれで計算したハッシュ関数の出力を照合し、両者が一致する限り、つまり認証がＯＫとなる限りにおいて、ハードウエアがソフトウエアに鍵を供給するようにしている。
また、特開２００６−２０３５６４号公報に記載されているプログラム実行証明方法では、サーバ端末が、予めノード端末に送ったプログラムのハッシュ値と、ノード端末から送られたプログラム及びその実行結果のハッシュ値とを比較し、一致している場合にプログラムはノード端末において正常に実行されたと判定するようにしている。
【０００５】
【特許文献１】特開２００４−３４２０４６号公報
【特許文献２】特開２００６−２０３５６４号公報
【０００６】
エミュレータについていえば、予めエミュレータが格納されている第１処理装置に、所定のハッシュ関数を用いて計算したソフトウエアのハッシュ値（例えば、ＭＤ５ハッシュ値、ＳＨＡ１ハッシュ値）を記録しておく。そして、後で取得したソフトウエアについて計算したハッシュ値と、予め記録されているハッシュ値とを比較し、同一性があれば、改竄がないことを確認する、ということが行われている。
ハッシュ値はソフトウエアに対応付けされた固定長の数値であり、少しでも改竄されているとハッシュ値は異なるものとなり、同一性の判定が容易である。改竄耐性を強化するために、ハッシュ値を暗号化したり、ハッシュ値の計算手法として「ＨＭＡＣ (Keyed-Hashing for Message Authentication)」を使う場合もある。ＨＭＡＣは、ハッシュ関数と秘密鍵とを用いてメッセージ認証を実現する手法である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
改竄検査は、エミュレーションと並行して行われる。そのため、エミュレーション自体の実行負荷が大きい場合、改竄検査が負担となり、エミュレーション速度が著しく遅くなる。そのため、エミュレータあるいは第２処理装置用のソフトウエアの商品価値を著しく損ねるという問題がある。
【０００８】
例えば、第１処理装置のプロセッサが連続的にコンテンツデータを読み込む必要があったり、第２処理装置側では固有のハードウエアで実現していた機能を第１処理装置ではソフトウエアによって実現しようとする場合、第１処理装置のプロセッサで行う処理量が過大となる。このようなときに、改竄検査を行うと、エミュレーション速度の低下がより顕著になる。
【０００９】
このような問題は、エミュレータに限らず、アプリケーションプログラムのようなソフトウエアの実行中に、その改竄検査を行おうとする場合に共通に生じる。
【００１０】
本発明は、かかる背景のもと、ソフトウエアの実行負荷に合わせた改竄検査を可能にする、改良された改竄検査の技術を提供することにある。
【課題を解決するための手段】
【００１１】
コンピュータ等の処理装置で使用されるソフトウエアは、処理プログラムと映像や音声等のコンテンツデータとに大別される。これらにはそれぞれ特有の属性があり、各属性に応じた扱いが可能である。例えば処理プログラムは、数バイト程度の改竄であっても、まったく異なる内容のものになる。すなわち僅か数バイト程度の操作で容易に改造がなされるので、重要な部分に対するコピープロテクトが必要とされる。ファイルサイズもそれほど大きくなく、小さいブロックに分割して格納されていることが多い。これに対して、コンテンツデータの場合、その多くは圧縮されて格納されており、ごく一部だけの改竄が難しく、仮にその一部が改竄されても、デコード時のエラーがノイズとして出るだけで、それほど大きな影響はない。大規模に改竄されても、画質や音質が多少変わる程度であり、致命的な問題にならない場合が多い。サイズは比較的大きく、ストリーミングするために連続した領域にまとめて格納されている場合が多い。大きいサイズのコンテンツデータでは、その再生開始時にブランク時間が生じやすい。
本発明は、このようなソフトウエアの属性に着目し、改竄検査のタイミングをソフトウエアの実行負荷に応じて少なくする改竄検査装置、改竄検査方法及びコンピュータプログラムを提供する。
【００１２】
本発明による第１の改竄検査装置は、処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段と、前記ソフトウエアに対する改竄の有無を検査する検査手段と、前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段とを有する装置である。
【００１３】
例えば、処理装置では特殊なハードウエアを用いて実現していた機能をソフトウエアで実現する場合、実処理に際して過大な負荷が生じる。他方、処理プログラムを読み込んで実行する場合は、仮想処理に比べて実処理が過小となる。前者の場合には検査を許容しないことにより、リソースをエミュレーションに集中させることで、エミュレーションの効率化を図ることができる。他方、後者の場合は、当該処理単位での実処理の時間に余裕ができるので、この時間内に改竄検査を行うことにより、エミュレーションに影響を与えずに改竄検査を終えることができる。「所定の処理単位」は、例えば表示画面分の処理量をいう。
【００１４】
第１の改竄検査装置において、前記ソフトウエアは、例えば、それ自体で流通可能な可搬性の記録媒体に記録された、前記実行手段が実行可能な少なくとも一つの処理プログラムとコンテンツデータとを含むものである。そして、前記負荷監視手段は、前記仮想処理又は前記実処理の内容に関わらず、前記記録媒体から読み込まれるものが処理プログラムかコンテンツデータかによって異なる所定の確率で、前記検査を許容する。処理プログラムは、改竄検査の必要性が高いのに対し、コンテンツデータはその逆なので、前者の場合は検査の確率を高め、後者の場合には確率を低くすることにより、エミュレーションに与える影響を緩和することができる。
【００１５】
より具体的には、第１の改竄検査装置における負荷監視手段は、前記記録媒体からの読込動作が複数の処理単位にわたって継続するときは、前記コンテンツデータについて割り当てられた確率で、前記検査を許容する。エミュレーション時の負荷が大きいのは、現象としては、連続的な読込が生じる場合、例えばコンテンツデータを読み込んでいる場合だからである。逆に、負荷監視手段がシークした先頭セクタでは、前記処理プログラムに割り当てられた確率で、前記検査を許容する。
【００１６】
第１の改竄検査装置において、前記負荷監視手段は、前記アーキテクチャ情報に基づいて当該処理単位の仮想処理時間を推定するとともに、推定した仮想処理時間と前記実行手段における実処理時間とを比較し、前記実処理時間が前記仮想処理時間よりも短いことを検出したときに、前記検査を許容するように構成することもできる。この場合、前記負荷監視手段は、前記仮想処理時間と前記実処理との差分の時間における前記検査を許容するようにしても良い。このように、差分の時間、つまり空いた時間に改竄検査を行うようにすれば、エミュレーションの実行負荷に及ぼす影響が無くなり、非常に都合が良い。
【００１７】
前記検査手段は、例えば、自己用に個性化されたハッシュ値及びこのハッシュ値を導出するためのハッシュ関数を保持するとともに、前記ソフトウエアに前記ハッシュ関数を適用して当該ソフトウエアのハッシュ値を導出し、導出したハッシュ値と保持されているハッシュ値とを比較してその同一性の有無を判定することにより前記検査を行うように構成する。ハッシュ関数を用いた改竄検査では、ソフトウエアのすべてをチェックするのではなく、特定の場所しか検査する必要がないし、また、一定間隔あるいは乱数で定めた間隔で検査することができるため、改竄検査による処理量の削減に対する一定の効果を期待できる。
【００１８】
本発明の第２の改竄検査装置は、それ自体で流通可能な可搬性の記録媒体に記録されているソフトウエアを実行する実行手段と、前記ソフトウエアに対する改竄の有無を検査する検査手段と、前記ソフトウエアの実行が予定される装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、前記ソフトウエアの実行環境での前記検査手段による検査を許容できるかどうかを決定する負荷監視手段とを有するものである。
【００１９】
本発明の改竄検査方法は、第２処理装置に読み込まれて使用されるソフトウエアを、前記第２処理装置とは異なるアーキテクチャの第１処理装置が電子的手段によって取得する過程と、前記ソフトウエアを取得した第１処理装置が、当該ソフトウエアのエミュレーションを自己のアーキテクチャのもとで実行するとともに、前記ソフトウエアの所定の処理単位毎に、予め保持されている前記第２処理装置のアーキテクチャの内容を表すアーキテクチャ情報に基づいて推定した仮想処理の内容と前記エミュレーションの実処理の内容とを比較することにより、エミュレーション中の検査を許容可能かどうかを決定し、許容できるときに、前記ソフトウエアに対する改竄の有無を検査する過程とを含む方法である。
【００２０】
本発明は、また、コンピュータを、処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段、前記ソフトウエアに対する改竄の有無を検査する検査手段、前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段、前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段、として機能させるためのコンピュータプログラムを提供する。
【発明の効果】
【００２１】
本発明によれば、セキュリティ対策が施されていない記録媒体に記録されているソフトウエアであっても、パフォーマンスを低下させずに改竄検査を行うことができるという特有の効果が得られる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して、本発明の実施の形態例を説明する。本発明は、インターネット等の通信手段を用いてソフトウエアを配信するネットワーク配信システムに適用することができる。
ネットワーク配信システムの概要を図１に示す。本実施形態によるネットワーク配信システムでは、第２処理装置５０で使用されるソフトウエアを、直接又はメモリデバイス６０を介して、プログラムサーバ４０に集める。ソフトウエアは、コンテンツデータを用いて、音を出す、画像／動画を表示する、表示場面を変化させる等の処理を行うための複数の処理プログラムと、処理プログラムの実行に際して必要となる音データ、画像データ等のコンテンツデータとが混在したものである。
【００２３】
プログラムサーバ４０は、このようなソフトウエアを、第２処理装置５０とは異なるアーキテクチャの第１処理装置１０上でエミュレーションできる形態に変換して、あるいは、エミュレーション用のプログラム又はパラメータを添付して、公衆通信網ＰＮを通じてアクセス可能なメモリ領域にアップロードする。本発明は、エミュレーション自体の仕方を主眼とするものではないので、以後の説明では、便宜上、上述のソフトウエアは、第１処理装置１０上でエミュレーションできる形態に変換されたものとする。
【００２４】
ユーザは、このソフトウエアを公衆通信網ＰＮに接続された自己のＰＣ３０にダウンロードする。そして、ダウンロードしたソフトウエアを、第１処理装置１０用として、それ自体で流通可能な可搬性のメモリデバイス２０に書き込み、これを第１処理装置１０に装着する。このようにして、第１処理装置１０において、第２処理装置用のソフトウエアをエミュレーションできるようにする。
【００２５】
＜第１処理装置＞
まず、エミュレーションを可能にする第１処理装置１０について説明する。第１処理装置１０は、例えば図２に示されるように、メインバスＮ１に、ＣＰＵコア１０１、メインメモリ１０４、サブＣＰＵ１１１、サブメモリ１１２、ＧＰＵ（graphical processor uinit）コア１２１、ＳＰＵ（sound processor unit）コア１３１、メディアデコーダ１４１、ＤＭＡＣ（Direct Memory Access Controller）１５１が接続されており、さらに、ＤＭＡＣ１５２が接続されるサブバスＮ２に、ＲＴＣ（Real Time Clock）１５２、タイマ１５３、セキュリティチップ１５４、エミュレータ１５５、メモリＩ／Ｏ１５６及び他のＩ／Ｏが接続される。ＶＲＡＭ１２２に描画された画像は、表示部（ＴＦＴ）１２３が接続されている。
【００２６】
ＣＰＵコア１０１は、ソフトウエアを実行するとともに、各部の動作を制御する。メインメモリ１０４は、ＣＰＵコア１０１が使用する作業メモリである。サブＣＰＵ１１１は、音楽再生や動画処理、Ｉ／Ｏ処理などを担当する。サブメモリ１１２は、サブＣＰＵ１１１が使用する作業メモリである。ＧＰＵコア１２１は、ジオメトリ処理及びレンダリング処理を行う。少ないジオメトリで複雑かつ滑らかな３Ｄグラフィックを実現するため、ＧＰＵコア１２１は、演算処理の軽いＢスプライン曲線、ベジェ曲線等を利用してジオメトリ処理を行う。テクスチャ圧縮、クリッピング、モーフィング、ポリゴン分割処理といった機能もハードウェアで実装している。ＳＰＵコア１３１は、再構成可能なＤＳＰを含んで構成される。数チャネルサラウンドのデコード、３Ｄ（３次元）サウンド機能などを行う。再構成可能なＤＳＰでは、処理ごとに最適化されたハードウェアで実行されるため、汎用プロセッサで処理するよりも電力効率が高まる。
【００２７】
メディアデコーダ１４１は、画像、音等をデコードして再生可能な形態に変換するとともに、変換されたデータのメインメモリ１０４への転送を行う。画像等が圧縮されている場合は、予めそれを復号する処理をも行う。ＤＭＡＣ１５１は、ＣＰＵコア１０１による処理を介さずに、直接、メモリ間のデータのやり取りを行うものである。ＲＴＣ１５２は内蔵時計であり、電源が切られている間も内蔵電池から電源の供給を受けて動作する。電源が入っている間は、外部電源から供給を受ける。タイマ１５３は、時間の経過をカウントする。セキュリティチップ１５４は、暗号アルゴリズム及び鍵が格納されている。エミュレータ１５５は、エミュレーションを行うためのファームウエアが格納された記録媒体であり、エミュレーション実行時に、ＣＰＵコア１０１に読み込まれて実行される。このエミュレータ１５５については、後で詳述する。メモリＩ／Ｏ１５６には、エミュレータ１５５のターゲットとなる第２処理装置５０用のソフトウエア（上述したように、第１処理装置１０で処理できる形式に変換されたもの）を格納したメモリデバイス２０が装着される。
【００２８】
＜第２処理装置＞
エミュレーションの元となる第２処理装置５０は、例えば図３に示されるハードウエア構成のものである。図２に示した第１処理装置１０とは、明らかに異なるアーキテクチャにより構成される。
【００２９】
第２処理装置５０は、ＣＰＵ５００とＧＰＵ（graphical processor unit）５１０とがバス５０１で接続され、ＣＰＵ５００とＩＯＰ（I/O processor）５２０とがバス５０２で接続され、さらに、メモリデバイス６０からソフトウエア等を読みとるメディアデコーダ５３０、音処理を行うＳＰＵ（sound processor unit）５４０及び制御プログラムを記録したＲＯＭ（read only memory）５５０が、バス５０３を通じてＩＯＰ５２０に接続されている。ＣＰＵ５００はメインメモリ５６０を備え、ＩＯＰ５２０はＩＯＰメモリ５７０を備える。ＩＯＰ５２０には、さらに、コントローラ５８０とメモリデバイス５９０とが接続されている。ＣＰＵ５００の主たる機能は、ＲＯＭ５５０に格納された基本プログラムや、ＣＤやＤＶＤ等のメディアからメインメモリ５６０にロードされた対象ＡＰ（アプリケーションプログラム）を実行することによって、所定の処理を行うことである。
【００３０】
ＧＰＵ（graphical processor uinit）５１０は、ＶＲＡＭ（VideoＲＡＭ）５１１への描画処理機能を受け持つ。具体的には、ＣＰＵ５００からの指示に従って対象ＡＰについての描画処理を行う。ＶＲＡＭ５１１に描画された内容は、ディスプレイに表示される。ＩＯＰ５２０は、ＣＰＵ５００と周辺装置との間のデータのやり取りを制御する入出力用プロセッサである。メディアデコーダ５３０は、メディア６０からデータを読み出し、そのメインメモリ５６０への転送を行う。ＳＰＵ５４０は、サウンド再生処理プロセッサであり、圧縮波形データをＣＰＵ５００等からの発音命令に基づき所定のサンプリング周波数で再生する。ＲＯＭ５５０は、起動時等にＣＰＵ５００やＩＯＰ５２０が実行するプログラムが格納されている読み出し専用のメモリである。ＲＯＭ５５０には、ＣＰＵ５００とＩＯＰ５２０とが共用するプログラム並びに各プロセッサ専用のプログラムが分離して格納される。メインメモリ５６０、ＩＯＰメモリ５７０は、それぞれＣＰＵ５００、ＩＯＰ５２０の作業用メモリとして機能する。コントローラ５８０は、ＡＰ実行中に、操作者の意図をＡＰに伝達するインタフェースである。メモリカード５９０は、書換可能な可搬性の不揮発性の二次記録媒体である。
【００３１】
＜エミュレータ＞
次に、図２に示した第１処理装置１０が有するエミュレータ１５５について、より詳細に説明する。本実施形態のエミュレータ１５５を含む第１処理装置１０は、ＣＰＵコア１０１又はサブＣＰＵ１１１が、エミュレータ１５５に組み込まれているプログラムを実行することにより、メモリデバイス２０に記録されているソフトウエアの改竄検査をエミュレーション中に行うことができる改竄検査装置として動作する。本実施形態では、第２処理装置５０用のソフトウエアを第１処理装置１０で使用するエミュレーション並びに改竄検査については、ＣＰＵコア１０１とサブＣＰＵ１１１の少なくとも一方が中心となって実行するものとして説明する。
【００３２】
図４に、エミュレータ１５５による機能構成例を示す。エミュレータ１５５は、組み込まれているプログラムを実行することにより、負荷監視部１５５１、検査部１５５２、ハッシュ管理部１５５３の機能を形成するとともに、図示しないメモリにアーキテクチャ情報ファイル１５５４、ルールファイル１５５５、関数ファイル１５５６及びハッシュ値ファイル１５５７を形成する。
【００３３】
アーキテクチャ情報ファイル１５５４には、図３に示した第２処理装置５０のアーキテクチャの内容、例えば、ハードウエアの種類、接続関係、各種レジスタの参照アドレスが、アーキテクチャ情報として格納される。このアーキテクチャ情報を参照することにより、ある時点でのエミュレーションが、ハードウエア資源をソフトウエアで実現するものなのか、あるいは、その逆なのかなどを迅速に特定することができる。また、アーキテクチャ情報に基づいて後述する仮想処理時間を算定することもできる。
【００３４】
ルールファイル１５５５には、「ＩＦ〜ＴＨＥＮ〜」のようなルールを規定したファイルである。例えば改竄検査に要する時間が１／１０[ms］であるから、空き時間がそれ以上のときに検査可能と判定するとか、過負荷状態が複数の処理単位に亘って継続する場合に検査を強制的に行うとか、読み込まれているソフトウエアが処理プログラムであれば、最初の処理単位では１００％、その後５０％の確率で、つまり２処理単位に１回の割合で検査するとか、読み込まれているソフトウエアがコンテンツデータであれば、読込終了後その再生直前の処理単位のときに５０％、その後、１０％の確率で検査を行うなどのルールが規定される。なお、エミュレーションに用いるソフトウエアに予めルール情報が書き込まれている場合、ルールファイル１５５５は不要である。
【００３５】
関数ファイル１５５６には、当該第１処理装置１０に固有となるハッシュ関数が格納されており、ハッシュ値ファイル１５５７には、検査時に、計算に用いるハッシュ関数と対応付けられた参照用のハッシュ値が格納されている。ハッシュ値ファイル１５５７は、例えば、第１処理装置１０の出荷時に予めその内部のデータベース（図示省略）に格納しておいても良いし、所定の鍵情報をもとに開梱できる形態で、エミュレーションに用いるソフトウエアと同梱しても良い。あるいは、第１処理装置１０が、所定の権限情報及びエミュレーションに用いるソフトウエアの識別情報をもとにプログラムサーバ４０からダウンロードするようにしても良い。
【００３６】
負荷監視部１５５１は、エミュレーションの実行負荷を１垂直同期（１ｖ）毎に監視し、改竄検査が可能かどうかを判定する。日本やアメリカの場合、垂直同期（Vsync）周波数が５９．９４［Ｈｚ］なので、１秒間に５９．９４回、表示用画面を更新する必要がある。そこで、本実施形態では、１画面分の処理を処理単位とし、処理単位毎に、上記の監視及び判定を行う。
【００３７】
エミュレーション時の実行負荷を表す負荷情報は、例えば、ＣＰＵコア１０１又はサブＣＰＵ１１１が有するプログラムカウンタの進捗状況、ＲＴＣ１５２によるタイマ１５３の出力値であり、それぞれエミュレーションを実行しているＣＰＵコア１０１、あるいは、サブＣＰＵ１１１より取得する。負荷監視部１５５１は、このような負荷情報により当該処理単位における実処理の内容を検知するとともに、アーキテクチャ情報ファイル１５５４に記録されている第２処理装置５０のアーキテクチャ情報に基づいて当該処理単位における仮想処理の内容を推定する。そして、両者の内容を比較することにより、エミュレーション中の検査を許容するかどうかを決定する。例えば検知した実処理の内容が、推定した仮想処理の内容よりも負荷が軽いものであれば、検査を許容し、そうでない場合は、検査を許容しないと決定する。
【００３８】
負荷監視部１５５１で検知する実処理の内容は、例えば、現在、音／映像の再生のための処理プログラムを実行している最中であるとか、コンテンツデータを読み込んでいる最中であるとか、処理を終えて待機している状態などがある。これらの実処理の内容は、処理単位毎に、迅速に把握するための専用デバイスを設けることが望ましいが、低コストで簡易に実処理の内容を把握しようとする場合は、処理単位毎の実処理時間をタイマ１５３で計測するだけで足りる。すなわち、処理単位の開始時にタイマ１５３を起動し、処理終了までのＲＴＣ１５２の経過時間を計測する。単純な処理プログラムの実行であれば、通常は実処理時間が短いし、ハードウエアをソフトウエアで実現する場合やコンテンツデータの読込であれば、通常は実処理時間が長いから、当該処理単位における実処理の内容をこれによって特定することができる。
【００３９】
仮想処理の内容は、エミュレーション時に読み込まれるプログラムの内容と、アーキテクチャ情報ファイル１５５４に記録されているアーキテクチャ情報による一種のシミュレーションであり、例えば、音／映像の再生のための仮想処理、コンテンツデータ読込のための仮想処理などである。仮想処理の内容は、より簡易には、アーキテクチャ情報に基づく仮想処理のための時間算定の形で推定することができる。
【００４０】
検査部１５５２は、ハッシュ管理部１５５３で管理しているハッシュ関数及びハッシュ値を用いて、エミュレーション中に、ＣＰＵコア１０１等に割り込んで、エミュレーション中のソフトウエアに対する改竄の有無を検査するものである。
このようにハッシュ関数及びハッシュ値を用いた検査を「ハッシュチェック」という。ハッシュチェックは、具体的には、以下のようにして行う。
すなわち、ある処理単位におけるソフトウエアに対するハッシュ値を、関数ファイル１５５６に格納されているハッシュ関数を用いて計算し、この計算したハッシュ値と、ハッシュ値ファイル１５５７に記録されているハッシュ値とを比較し、同一であれば、改竄がなされていないと判定する。ハッシュ値が同一でなかったときは改竄がなされているおそれがあるので、ＣＰＵコア１０１にアラーム（ＡＬＭ）を出力して処理の中止等を促す。
エミュレーション中のハッシュチェックは、基本的には、ソフトウエアの読込が生じる際に行われる。例えば、第１処理装置１０のアプリケーションからの要求によってエミュレータ１５５がファイル読込をエミュレートする際、メモリデバイス２０から該当ファイル（処理プログラム又はコンテンツデータが記録されたファイル）を読み込み、これを、要求したアプリケーションに、「そのアプリケーションが読み込んだもの」として渡されるが、ハッシュチェックは、そのファイル読込時に行われる。
【００４１】
［改竄検査方法］
次に、上記のように構成される第１処理装置１０による改竄検査方法の実施の形態例を説明する。図５は改竄検査方法の処理手順説明図であり、図６は、仮想処理の内容と実時間の内容の比較例となる時間関係の比較説明図である。図７は、改竄検査を強制的に行う場合の一例を示した図である。
【００４２】
図５を参照すると、負荷監視部１５５１は、ＣＰＵコア１０１等によるエミュレーションの実行中（ステップＳ０１）、ある処理単位で（ステップＳ０２）、仮想処理時間ｔ１を算定するとともに実処理時間ｔ２を計測する（ステップＳ０３）。実処理時間ｔ２が仮想処理時間ｔ１よりも長い状態が３処理単位について連続しない場合（ステップＳ０４：Yes、Ｓ０６：No）、あるいは、実処理時間ｔ２が仮想処理時間ｔ１よりも短いが、検査のための十分な時間を確保できない場合（ステップＳ０５：No）、状態としては、エミュレーションの実行負荷が大きいことを示しているので、負荷監視部１５５１は、改竄検査の許可を出さず、次の処理単位（処理単位が終了しない場合）についてステップＳ０３の処理を行う（ステップＳＳ０７、Ｓ０８）。
【００４３】
一方、図７に示されるように、実処理時間ｔ２が仮想処理時間ｔ１よりも長い状態が３回連続した場合（ステップＳ０４：Yes、Ｓ０６：Yes）、あるいは、図６に示されるように、仮想処理時間ｔ１と実処理時間ｔ２との差分の時間が検査のための時間分以上となる場合（ステップＳ０５：Yes）、負荷監視部１５５１は、ルールファイル１５５５に格納されている所定の確率で、検査の許可情報を検査部１５５２に出力する（ステップＳ０９）。なお、図示しないが、シークした直後の先頭セクタ付近では、そこに処理プログラムが存在する確率が高いので、これに併せて、許可情報を出力する確率を高くする。
【００４４】
検査部１５５２は、許可情報の受信を契機に、その処理単位におけるハッシュチェックを行う。すなわち、ハッシュ関数を用いてハッシュ値を計算し、計算したハッシュ値と、ハッシュ値ファイル１５５７に記録されているハッシュ値とを比較し、同一であれば、改竄がなされていないと判定する。ハッシュ値が同一でなかったときは、ＣＰＵコア１０１にアラーム（ＡＬＭ）を出力して処理の中止等を促す。以上の手順をエミュレーション中、処理単位毎に繰り返し（ステップＳ０８：No）、エミュレーションが終了した時点で処理を終える（ステップＳ０８:Yes）。
【００４５】
以上の改竄検査により、以下のような効果が得られる。
（１）特定のハードウエアをソフトウエアでエミュレーションしている間は、ハッシュチェックのための間隔が長くなる。
（２）連続領域の読込が行われた場合、ハッシュチェックのための間隔が長くなる。逆に、シークした先頭セクタ付近では、高い確率でハッシュチェックが行われる。
（３）エミュレーションしている仮想処理時間と実処理時間の差分をみて、余裕があるときのみハッシュチェックが行われる。
【００４６】
すなわち、エミュレーション中、ハッシュチェックが行われる確率が高いのは、実処理のリソースが余っている状態のときや、処理プログラムが読み込まれたときとなる。逆に、連続領域の読込が行われているという現象は、読込の対象になっているのが画像、映像等のデータである場合が殆どである。従って、たとえその領域で改竄が行われていたとしても、エミュレーションに大きな影響を与える確率が低い。そのため、従来よりも検査回数を減らすことができる。このことを図示したのが図８である。
【００４７】
図８（ａ）は、一定間隔で特定の場所をハッシュチェックしていた従来例、図８（ｂ）は、乱数で定まる間隔でハッシュチェックしていた従来例である。一定間隔であろうが乱数間隔であろうが、従来は、所定サイズ毎にハッシュチェックを行っていたので、実処理のリソースが検査に使われており、実処理の速度を遅くさせていた。これに対して、本実施例の改竄検査方法によれば、ハッシュチェックの回数は図８（ｃ）のように少なくなり、差分のリソースを実処理にあてることができる。
このようにして、第１処理装置１０のパフォーマンスを考慮した改竄検査が可能になる。
【００４８】
本実施形態は以上のとおりであるが、本発明は、上述した実施の形態例に限るものではなく、種々の態様での実施が可能である。例えば、本実施形態では、エミュレータ１５５が第１処理装置１０に備えられる記録媒体に格納されたファームウエアであることを前提として説明したが、エミュレータ１５５を、外部から配布されたソフトウエアにより実現することもできる。すなわち、第１処理装置１０が読み取り可能な記録媒体に記録されたものを図示しないメモリにインストールすることによって、ソフトウエア的にエミュレータ１５５の機能を形成することができる。
また、本実施形態では、エミュレーションの場合を例に挙げて説明したが、エミュレータ以外の一般的なソフトウエアについての改竄検査にも本発明を適用することができる。
また、本実施形態では、ハッシュチェックによって改竄の有無を検査する場合の例を示したが、暗号鍵／復号鍵その他のセキュリティデータを用いて改竄の有無を検査することも可能である。
【産業上の利用可能性】
【００４９】
本発明は、ネットワーク配信によってプログラムやデータを含むソフトウエアを公衆に配信する場合の当該ソフトウエアの改竄検査を要するすべての分野に利用することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明が適用されるネットワーク配信システムの概要説明図。
【図２】第１処理装置のハードウエア構成図。
【図３】第２処理装置のハードウエア構成図。
【図４】本実施形態によるエミュレータの機能構成図。
【図５】改竄検査処理の手順説明図。
【図６】仮想処理時間と実処理時間との関係説明図。
【図７】複数の処理単位で連続して過大な負荷が生じているときの検査タイミングの説明図。
【図８】（ａ）は一定間隔で検査する従来のタイミング例、（ｂ）は乱数間隔で検査する従来のタイミング例、（ｃ）は本実施形態による検査のタイミング例を示す。
【符号の説明】
【００５１】
１０、５０・・・処理装置、２０，６０・・・メモリデバイス、３０・・・パーソナルコンピュータ（ＰＣ）、４０・・・プログラムサーバ、ＰＮ・・・公衆通信網、１０１・・・ＣＰＵコア、１０２・・・ＦＰＵ、１０３・・・Ｖ−ＦＰＵ、１１１・・・サブＣＰＵ、１１２・・・サブメモリ、１２１・・・ＧＰＵコア、１２２・・・ＶＲＡＭ、１２３・・・ＴＦＴ、１３１・・・ＳＰＵコア、１４１・・・メディアデコーダ、１５１・・・ＤＭＡＣ、１５２・・・ＲＴＣ、１５３・・・タイマ、１５４・・・セキュリティチップ、１５５・・・エミュレータ、１５６・・・メモリＩ／Ｏ、１５５１・・・負荷監視部、１５５２・・・検査部、１５５３・・・ハッシュ管理部、１５５４・・・アーキテクチャ情報ファイル、１５５５・・・ルールファイル、１５５６・・・関数ファイル、１５５７・・・ハッシュ値ファイル。
【図１】
2008129800.tif 000003
【図２】
2008129800.tif 000004
【図３】
2008129800.tif 000005
【図４】
2008129800.tif 000006
【図５】
2008129800.tif 000007
【図６】
2008129800.tif 000008
【図７】
2008129800.tif 000009
【図８】
2008129800.tif 000010