JP2008129800A - ソフトウエアの改竄検査装置及び方法、コンピュータプログラム - Google Patents

ソフトウエアの改竄検査装置及び方法、コンピュータプログラム Download PDF

Info

Publication number
JP2008129800A
JP2008129800A JP2006313221A JP2006313221A JP2008129800A JP 2008129800 A JP2008129800 A JP 2008129800A JP 2006313221 A JP2006313221 A JP 2006313221A JP 2006313221 A JP2006313221 A JP 2006313221A JP 2008129800 A JP2008129800 A JP 2008129800A
Authority
JP
Japan
Prior art keywords
inspection
software
processing
architecture
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006313221A
Other languages
English (en)
Other versions
JP4896677B2 (ja
Inventor
Keisuke Shimizu
圭介 清水
Takehiro Tominaga
丈博 冨永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2006313221A priority Critical patent/JP4896677B2/ja
Publication of JP2008129800A publication Critical patent/JP2008129800A/ja
Application granted granted Critical
Publication of JP4896677B2 publication Critical patent/JP4896677B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】ソフトウエアの実行負荷に合わせた改竄検査を可能にする。
【解決手段】負荷監視部1551は、ソフトウエアの所定の処理単位毎に、アーキテクチャ情報ファイル1554の記録情報に基づいて推定した仮想処理時間と実処理時間とを比較し、実処理時間が仮想処理時間よりも十分短い場合に、検査部1552にエミュレーション中の検査を許容する。検査部1552は、ハッシュ管理部1553で管理している固有のハッシュ値を用いてソフトウエアの改竄検査を行う。
【選択図】図4

Description

本発明は、例えばある処理装置用に作成されたソフトウエアを、アーキテクチャが異なる他の処理装置上でエミュレーションする際に、ソフトウエアが元の内容から改竄されているかどうかを、エミュレーションの実行負荷を考慮しながら検査する改竄検査技術に関する。
第1処理装置上で、その第1処理装置とは異なる第2処理装置のアーキテクチャを実現して当該第2処理装置用のソフトウエアを使用することをエミュレーションといい、このエミュレーションを可能にする第1処理装置用のソフトウエア又はファームウエアをエミュレータという。エミュレータは、例えば第1処理装置のプロセッサが読み取り可能な領域に予め格納される。他方、第2処理装置用のソフトウエア、すなわち複数の処理プログラム及びコンテンツデータは、第1処理装置が読み取り可能なメモリデバイスに格納して提供される。
このメモリデバイスに対するセキュリティ対策が不十分の場合、例えば、第2処理装置用のソフトウエアが公衆通信網を通じてユーザのパーソナルコンピュータ(以下、「PC」と称する)等に配信され、ユーザの手によって市販のメモリデバイスに格納される場合、当該ソフトウエアが悪意の者によって改竄される可能性がある。そのため、エミュレータ側に、ソフトウエアの改竄検査機能を付加する場合がある。
ソフトウエアの改竄検査には電子透かし等の手法も存在するが、ソフトウエアのサイズが比較的大きいときの改竄検査の手法としては、格納時と読み取り時とのハッシュ値の同一性を比較するハッシュ法を用いるのが一般的である。例えば、特開2004−342046号公報に記載されているソフトウエア認証方法では、ソフトウエアの実行開始から終了までの全期間にわたって、随時、ソフトウエア及びハードウエアのそれぞれで計算したハッシュ関数の出力を照合し、両者が一致する限り、つまり認証がOKとなる限りにおいて、ハードウエアがソフトウエアに鍵を供給するようにしている。
また、特開2006−203564号公報に記載されているプログラム実行証明方法では、サーバ端末が、予めノード端末に送ったプログラムのハッシュ値と、ノード端末から送られたプログラム及びその実行結果のハッシュ値とを比較し、一致している場合にプログラムはノード端末において正常に実行されたと判定するようにしている。
特開2004−342046号公報 特開2006−203564号公報
エミュレータについていえば、予めエミュレータが格納されている第1処理装置に、所定のハッシュ関数を用いて計算したソフトウエアのハッシュ値(例えば、MD5ハッシュ値、SHA1ハッシュ値)を記録しておく。そして、後で取得したソフトウエアについて計算したハッシュ値と、予め記録されているハッシュ値とを比較し、同一性があれば、改竄がないことを確認する、ということが行われている。
ハッシュ値はソフトウエアに対応付けされた固定長の数値であり、少しでも改竄されているとハッシュ値は異なるものとなり、同一性の判定が容易である。改竄耐性を強化するために、ハッシュ値を暗号化したり、ハッシュ値の計算手法として「HMAC (Keyed-Hashing for Message Authentication)」を使う場合もある。HMACは、ハッシュ関数と秘密鍵とを用いてメッセージ認証を実現する手法である。
改竄検査は、エミュレーションと並行して行われる。そのため、エミュレーション自体の実行負荷が大きい場合、改竄検査が負担となり、エミュレーション速度が著しく遅くなる。そのため、エミュレータあるいは第2処理装置用のソフトウエアの商品価値を著しく損ねるという問題がある。
例えば、第1処理装置のプロセッサが連続的にコンテンツデータを読み込む必要があったり、第2処理装置側では固有のハードウエアで実現していた機能を第1処理装置ではソフトウエアによって実現しようとする場合、第1処理装置のプロセッサで行う処理量が過大となる。このようなときに、改竄検査を行うと、エミュレーション速度の低下がより顕著になる。
このような問題は、エミュレータに限らず、アプリケーションプログラムのようなソフトウエアの実行中に、その改竄検査を行おうとする場合に共通に生じる。
本発明は、かかる背景のもと、ソフトウエアの実行負荷に合わせた改竄検査を可能にする、改良された改竄検査の技術を提供することにある。
コンピュータ等の処理装置で使用されるソフトウエアは、処理プログラムと映像や音声等のコンテンツデータとに大別される。これらにはそれぞれ特有の属性があり、各属性に応じた扱いが可能である。例えば処理プログラムは、数バイト程度の改竄であっても、まったく異なる内容のものになる。すなわち僅か数バイト程度の操作で容易に改造がなされるので、重要な部分に対するコピープロテクトが必要とされる。ファイルサイズもそれほど大きくなく、小さいブロックに分割して格納されていることが多い。これに対して、コンテンツデータの場合、その多くは圧縮されて格納されており、ごく一部だけの改竄が難しく、仮にその一部が改竄されても、デコード時のエラーがノイズとして出るだけで、それほど大きな影響はない。大規模に改竄されても、画質や音質が多少変わる程度であり、致命的な問題にならない場合が多い。サイズは比較的大きく、ストリーミングするために連続した領域にまとめて格納されている場合が多い。大きいサイズのコンテンツデータでは、その再生開始時にブランク時間が生じやすい。
本発明は、このようなソフトウエアの属性に着目し、改竄検査のタイミングをソフトウエアの実行負荷に応じて少なくする改竄検査装置、改竄検査方法及びコンピュータプログラムを提供する。
本発明による第1の改竄検査装置は、処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段と、前記ソフトウエアに対する改竄の有無を検査する検査手段と、前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段とを有する装置である。
例えば、処理装置では特殊なハードウエアを用いて実現していた機能をソフトウエアで実現する場合、実処理に際して過大な負荷が生じる。他方、処理プログラムを読み込んで実行する場合は、仮想処理に比べて実処理が過小となる。前者の場合には検査を許容しないことにより、リソースをエミュレーションに集中させることで、エミュレーションの効率化を図ることができる。他方、後者の場合は、当該処理単位での実処理の時間に余裕ができるので、この時間内に改竄検査を行うことにより、エミュレーションに影響を与えずに改竄検査を終えることができる。「所定の処理単位」は、例えば表示画面分の処理量をいう。
第1の改竄検査装置において、前記ソフトウエアは、例えば、それ自体で流通可能な可搬性の記録媒体に記録された、前記実行手段が実行可能な少なくとも一つの処理プログラムとコンテンツデータとを含むものである。そして、前記負荷監視手段は、前記仮想処理又は前記実処理の内容に関わらず、前記記録媒体から読み込まれるものが処理プログラムかコンテンツデータかによって異なる所定の確率で、前記検査を許容する。処理プログラムは、改竄検査の必要性が高いのに対し、コンテンツデータはその逆なので、前者の場合は検査の確率を高め、後者の場合には確率を低くすることにより、エミュレーションに与える影響を緩和することができる。
より具体的には、第1の改竄検査装置における負荷監視手段は、前記記録媒体からの読込動作が複数の処理単位にわたって継続するときは、前記コンテンツデータについて割り当てられた確率で、前記検査を許容する。エミュレーション時の負荷が大きいのは、現象としては、連続的な読込が生じる場合、例えばコンテンツデータを読み込んでいる場合だからである。逆に、負荷監視手段がシークした先頭セクタでは、前記処理プログラムに割り当てられた確率で、前記検査を許容する。
第1の改竄検査装置において、前記負荷監視手段は、前記アーキテクチャ情報に基づいて当該処理単位の仮想処理時間を推定するとともに、推定した仮想処理時間と前記実行手段における実処理時間とを比較し、前記実処理時間が前記仮想処理時間よりも短いことを検出したときに、前記検査を許容するように構成することもできる。この場合、前記負荷監視手段は、前記仮想処理時間と前記実処理との差分の時間における前記検査を許容するようにしても良い。このように、差分の時間、つまり空いた時間に改竄検査を行うようにすれば、エミュレーションの実行負荷に及ぼす影響が無くなり、非常に都合が良い。
前記検査手段は、例えば、自己用に個性化されたハッシュ値及びこのハッシュ値を導出するためのハッシュ関数を保持するとともに、前記ソフトウエアに前記ハッシュ関数を適用して当該ソフトウエアのハッシュ値を導出し、導出したハッシュ値と保持されているハッシュ値とを比較してその同一性の有無を判定することにより前記検査を行うように構成する。ハッシュ関数を用いた改竄検査では、ソフトウエアのすべてをチェックするのではなく、特定の場所しか検査する必要がないし、また、一定間隔あるいは乱数で定めた間隔で検査することができるため、改竄検査による処理量の削減に対する一定の効果を期待できる。
本発明の第2の改竄検査装置は、それ自体で流通可能な可搬性の記録媒体に記録されているソフトウエアを実行する実行手段と、前記ソフトウエアに対する改竄の有無を検査する検査手段と、前記ソフトウエアの実行が予定される装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、前記ソフトウエアの実行環境での前記検査手段による検査を許容できるかどうかを決定する負荷監視手段とを有するものである。
本発明の改竄検査方法は、第2処理装置に読み込まれて使用されるソフトウエアを、前記第2処理装置とは異なるアーキテクチャの第1処理装置が電子的手段によって取得する過程と、前記ソフトウエアを取得した第1処理装置が、当該ソフトウエアのエミュレーションを自己のアーキテクチャのもとで実行するとともに、前記ソフトウエアの所定の処理単位毎に、予め保持されている前記第2処理装置のアーキテクチャの内容を表すアーキテクチャ情報に基づいて推定した仮想処理の内容と前記エミュレーションの実処理の内容とを比較することにより、エミュレーション中の検査を許容可能かどうかを決定し、許容できるときに、前記ソフトウエアに対する改竄の有無を検査する過程とを含む方法である。
本発明は、また、コンピュータを、処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段、前記ソフトウエアに対する改竄の有無を検査する検査手段、前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段、前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段、として機能させるためのコンピュータプログラムを提供する。
本発明によれば、セキュリティ対策が施されていない記録媒体に記録されているソフトウエアであっても、パフォーマンスを低下させずに改竄検査を行うことができるという特有の効果が得られる。
以下、図面を参照して、本発明の実施の形態例を説明する。本発明は、インターネット等の通信手段を用いてソフトウエアを配信するネットワーク配信システムに適用することができる。
ネットワーク配信システムの概要を図1に示す。本実施形態によるネットワーク配信システムでは、第2処理装置50で使用されるソフトウエアを、直接又はメモリデバイス60を介して、プログラムサーバ40に集める。ソフトウエアは、コンテンツデータを用いて、音を出す、画像/動画を表示する、表示場面を変化させる等の処理を行うための複数の処理プログラムと、処理プログラムの実行に際して必要となる音データ、画像データ等のコンテンツデータとが混在したものである。
プログラムサーバ40は、このようなソフトウエアを、第2処理装置50とは異なるアーキテクチャの第1処理装置10上でエミュレーションできる形態に変換して、あるいは、エミュレーション用のプログラム又はパラメータを添付して、公衆通信網PNを通じてアクセス可能なメモリ領域にアップロードする。本発明は、エミュレーション自体の仕方を主眼とするものではないので、以後の説明では、便宜上、上述のソフトウエアは、第1処理装置10上でエミュレーションできる形態に変換されたものとする。
ユーザは、このソフトウエアを公衆通信網PNに接続された自己のPC30にダウンロードする。そして、ダウンロードしたソフトウエアを、第1処理装置10用として、それ自体で流通可能な可搬性のメモリデバイス20に書き込み、これを第1処理装置10に装着する。このようにして、第1処理装置10において、第2処理装置用のソフトウエアをエミュレーションできるようにする。
<第1処理装置>
まず、エミュレーションを可能にする第1処理装置10について説明する。第1処理装置10は、例えば図2に示されるように、メインバスN1に、CPUコア101、メインメモリ104、サブCPU111、サブメモリ112、GPU(graphical processor uinit)コア121、SPU(sound processor unit)コア131、メディアデコーダ141、DMAC(Direct Memory Access Controller)151が接続されており、さらに、DMAC152が接続されるサブバスN2に、RTC(Real Time Clock)152、タイマ153、セキュリティチップ154、エミュレータ155、メモリI/O156及び他のI/Oが接続される。VRAM122に描画された画像は、表示部(TFT)123が接続されている。
CPUコア101は、ソフトウエアを実行するとともに、各部の動作を制御する。メインメモリ104は、CPUコア101が使用する作業メモリである。サブCPU111は、音楽再生や動画処理、I/O処理などを担当する。サブメモリ112は、サブCPU111が使用する作業メモリである。GPUコア121は、ジオメトリ処理及びレンダリング処理を行う。少ないジオメトリで複雑かつ滑らかな3Dグラフィックを実現するため、GPUコア121は、演算処理の軽いBスプライン曲線、ベジェ曲線等を利用してジオメトリ処理を行う。テクスチャ圧縮、クリッピング、モーフィング、ポリゴン分割処理といった機能もハードウェアで実装している。SPUコア131は、再構成可能なDSPを含んで構成される。数チャネルサラウンドのデコード、3D(3次元)サウンド機能などを行う。再構成可能なDSPでは、処理ごとに最適化されたハードウェアで実行されるため、汎用プロセッサで処理するよりも電力効率が高まる。
メディアデコーダ141は、画像、音等をデコードして再生可能な形態に変換するとともに、変換されたデータのメインメモリ104への転送を行う。画像等が圧縮されている場合は、予めそれを復号する処理をも行う。DMAC151は、CPUコア101による処理を介さずに、直接、メモリ間のデータのやり取りを行うものである。RTC152は内蔵時計であり、電源が切られている間も内蔵電池から電源の供給を受けて動作する。電源が入っている間は、外部電源から供給を受ける。タイマ153は、時間の経過をカウントする。セキュリティチップ154は、暗号アルゴリズム及び鍵が格納されている。エミュレータ155は、エミュレーションを行うためのファームウエアが格納された記録媒体であり、エミュレーション実行時に、CPUコア101に読み込まれて実行される。このエミュレータ155については、後で詳述する。メモリI/O156には、エミュレータ155のターゲットとなる第2処理装置50用のソフトウエア(上述したように、第1処理装置10で処理できる形式に変換されたもの)を格納したメモリデバイス20が装着される。
<第2処理装置>
エミュレーションの元となる第2処理装置50は、例えば図3に示されるハードウエア構成のものである。図2に示した第1処理装置10とは、明らかに異なるアーキテクチャにより構成される。
第2処理装置50は、CPU500とGPU(graphical processor unit)510とがバス501で接続され、CPU500とIOP(I/O processor)520とがバス502で接続され、さらに、メモリデバイス60からソフトウエア等を読みとるメディアデコーダ530、音処理を行うSPU(sound processor unit)540及び制御プログラムを記録したROM(read only memory)550が、バス503を通じてIOP520に接続されている。CPU500はメインメモリ560を備え、IOP520はIOPメモリ570を備える。IOP520には、さらに、コントローラ580とメモリデバイス590とが接続されている。CPU500の主たる機能は、ROM550に格納された基本プログラムや、CDやDVD等のメディアからメインメモリ560にロードされた対象AP(アプリケーションプログラム)を実行することによって、所定の処理を行うことである。
GPU(graphical processor uinit)510は、VRAM(VideoRAM)511への描画処理機能を受け持つ。具体的には、CPU500からの指示に従って対象APについての描画処理を行う。VRAM511に描画された内容は、ディスプレイに表示される。IOP520は、CPU500と周辺装置との間のデータのやり取りを制御する入出力用プロセッサである。メディアデコーダ530は、メディア60からデータを読み出し、そのメインメモリ560への転送を行う。SPU540は、サウンド再生処理プロセッサであり、圧縮波形データをCPU500等からの発音命令に基づき所定のサンプリング周波数で再生する。ROM550は、起動時等にCPU500やIOP520が実行するプログラムが格納されている読み出し専用のメモリである。ROM550には、CPU500とIOP520とが共用するプログラム並びに各プロセッサ専用のプログラムが分離して格納される。メインメモリ560、IOPメモリ570は、それぞれCPU500、IOP520の作業用メモリとして機能する。コントローラ580は、AP実行中に、操作者の意図をAPに伝達するインタフェースである。メモリカード590は、書換可能な可搬性の不揮発性の二次記録媒体である。
<エミュレータ>
次に、図2に示した第1処理装置10が有するエミュレータ155について、より詳細に説明する。本実施形態のエミュレータ155を含む第1処理装置10は、CPUコア101又はサブCPU111が、エミュレータ155に組み込まれているプログラムを実行することにより、メモリデバイス20に記録されているソフトウエアの改竄検査をエミュレーション中に行うことができる改竄検査装置として動作する。本実施形態では、第2処理装置50用のソフトウエアを第1処理装置10で使用するエミュレーション並びに改竄検査については、CPUコア101とサブCPU111の少なくとも一方が中心となって実行するものとして説明する。
図4に、エミュレータ155による機能構成例を示す。エミュレータ155は、組み込まれているプログラムを実行することにより、負荷監視部1551、検査部1552、ハッシュ管理部1553の機能を形成するとともに、図示しないメモリにアーキテクチャ情報ファイル1554、ルールファイル1555、関数ファイル1556及びハッシュ値ファイル1557を形成する。
アーキテクチャ情報ファイル1554には、図3に示した第2処理装置50のアーキテクチャの内容、例えば、ハードウエアの種類、接続関係、各種レジスタの参照アドレスが、アーキテクチャ情報として格納される。このアーキテクチャ情報を参照することにより、ある時点でのエミュレーションが、ハードウエア資源をソフトウエアで実現するものなのか、あるいは、その逆なのかなどを迅速に特定することができる。また、アーキテクチャ情報に基づいて後述する仮想処理時間を算定することもできる。
ルールファイル1555には、「IF〜THEN〜」のようなルールを規定したファイルである。例えば改竄検査に要する時間が1/10[ms]であるから、空き時間がそれ以上のときに検査可能と判定するとか、過負荷状態が複数の処理単位に亘って継続する場合に検査を強制的に行うとか、読み込まれているソフトウエアが処理プログラムであれば、最初の処理単位では100%、その後50%の確率で、つまり2処理単位に1回の割合で検査するとか、読み込まれているソフトウエアがコンテンツデータであれば、読込終了後その再生直前の処理単位のときに50%、その後、10%の確率で検査を行うなどのルールが規定される。なお、エミュレーションに用いるソフトウエアに予めルール情報が書き込まれている場合、ルールファイル1555は不要である。
関数ファイル1556には、当該第1処理装置10に固有となるハッシュ関数が格納されており、ハッシュ値ファイル1557には、検査時に、計算に用いるハッシュ関数と対応付けられた参照用のハッシュ値が格納されている。ハッシュ値ファイル1557は、例えば、第1処理装置10の出荷時に予めその内部のデータベース(図示省略)に格納しておいても良いし、所定の鍵情報をもとに開梱できる形態で、エミュレーションに用いるソフトウエアと同梱しても良い。あるいは、第1処理装置10が、所定の権限情報及びエミュレーションに用いるソフトウエアの識別情報をもとにプログラムサーバ40からダウンロードするようにしても良い。
負荷監視部1551は、エミュレーションの実行負荷を1垂直同期(1v)毎に監視し、改竄検査が可能かどうかを判定する。日本やアメリカの場合、垂直同期(Vsync)周波数が59.94[Hz]なので、1秒間に59.94回、表示用画面を更新する必要がある。そこで、本実施形態では、1画面分の処理を処理単位とし、処理単位毎に、上記の監視及び判定を行う。
エミュレーション時の実行負荷を表す負荷情報は、例えば、CPUコア101又はサブCPU111が有するプログラムカウンタの進捗状況、RTC152によるタイマ153の出力値であり、それぞれエミュレーションを実行しているCPUコア101、あるいは、サブCPU111より取得する。負荷監視部1551は、このような負荷情報により当該処理単位における実処理の内容を検知するとともに、アーキテクチャ情報ファイル1554に記録されている第2処理装置50のアーキテクチャ情報に基づいて当該処理単位における仮想処理の内容を推定する。そして、両者の内容を比較することにより、エミュレーション中の検査を許容するかどうかを決定する。例えば検知した実処理の内容が、推定した仮想処理の内容よりも負荷が軽いものであれば、検査を許容し、そうでない場合は、検査を許容しないと決定する。
負荷監視部1551で検知する実処理の内容は、例えば、現在、音/映像の再生のための処理プログラムを実行している最中であるとか、コンテンツデータを読み込んでいる最中であるとか、処理を終えて待機している状態などがある。これらの実処理の内容は、処理単位毎に、迅速に把握するための専用デバイスを設けることが望ましいが、低コストで簡易に実処理の内容を把握しようとする場合は、処理単位毎の実処理時間をタイマ153で計測するだけで足りる。すなわち、処理単位の開始時にタイマ153を起動し、処理終了までのRTC152の経過時間を計測する。単純な処理プログラムの実行であれば、通常は実処理時間が短いし、ハードウエアをソフトウエアで実現する場合やコンテンツデータの読込であれば、通常は実処理時間が長いから、当該処理単位における実処理の内容をこれによって特定することができる。
仮想処理の内容は、エミュレーション時に読み込まれるプログラムの内容と、アーキテクチャ情報ファイル1554に記録されているアーキテクチャ情報による一種のシミュレーションであり、例えば、音/映像の再生のための仮想処理、コンテンツデータ読込のための仮想処理などである。仮想処理の内容は、より簡易には、アーキテクチャ情報に基づく仮想処理のための時間算定の形で推定することができる。
検査部1552は、ハッシュ管理部1553で管理しているハッシュ関数及びハッシュ値を用いて、エミュレーション中に、CPUコア101等に割り込んで、エミュレーション中のソフトウエアに対する改竄の有無を検査するものである。
このようにハッシュ関数及びハッシュ値を用いた検査を「ハッシュチェック」という。ハッシュチェックは、具体的には、以下のようにして行う。
すなわち、ある処理単位におけるソフトウエアに対するハッシュ値を、関数ファイル1556に格納されているハッシュ関数を用いて計算し、この計算したハッシュ値と、ハッシュ値ファイル1557に記録されているハッシュ値とを比較し、同一であれば、改竄がなされていないと判定する。ハッシュ値が同一でなかったときは改竄がなされているおそれがあるので、CPUコア101にアラーム(ALM)を出力して処理の中止等を促す。
エミュレーション中のハッシュチェックは、基本的には、ソフトウエアの読込が生じる際に行われる。例えば、第1処理装置10のアプリケーションからの要求によってエミュレータ155がファイル読込をエミュレートする際、メモリデバイス20から該当ファイル(処理プログラム又はコンテンツデータが記録されたファイル)を読み込み、これを、要求したアプリケーションに、「そのアプリケーションが読み込んだもの」として渡されるが、ハッシュチェックは、そのファイル読込時に行われる。
[改竄検査方法]
次に、上記のように構成される第1処理装置10による改竄検査方法の実施の形態例を説明する。図5は改竄検査方法の処理手順説明図であり、図6は、仮想処理の内容と実時間の内容の比較例となる時間関係の比較説明図である。図7は、改竄検査を強制的に行う場合の一例を示した図である。
図5を参照すると、負荷監視部1551は、CPUコア101等によるエミュレーションの実行中(ステップS01)、ある処理単位で(ステップS02)、仮想処理時間t1を算定するとともに実処理時間t2を計測する(ステップS03)。実処理時間t2が仮想処理時間t1よりも長い状態が3処理単位について連続しない場合(ステップS04:Yes、S06:No)、あるいは、実処理時間t2が仮想処理時間t1よりも短いが、検査のための十分な時間を確保できない場合(ステップS05:No)、状態としては、エミュレーションの実行負荷が大きいことを示しているので、負荷監視部1551は、改竄検査の許可を出さず、次の処理単位(処理単位が終了しない場合)についてステップS03の処理を行う(ステップSS07、S08)。
一方、図7に示されるように、実処理時間t2が仮想処理時間t1よりも長い状態が3回連続した場合(ステップS04:Yes、S06:Yes)、あるいは、図6に示されるように、仮想処理時間t1と実処理時間t2との差分の時間が検査のための時間分以上となる場合(ステップS05:Yes)、負荷監視部1551は、ルールファイル1555に格納されている所定の確率で、検査の許可情報を検査部1552に出力する(ステップS09)。なお、図示しないが、シークした直後の先頭セクタ付近では、そこに処理プログラムが存在する確率が高いので、これに併せて、許可情報を出力する確率を高くする。
検査部1552は、許可情報の受信を契機に、その処理単位におけるハッシュチェックを行う。すなわち、ハッシュ関数を用いてハッシュ値を計算し、計算したハッシュ値と、ハッシュ値ファイル1557に記録されているハッシュ値とを比較し、同一であれば、改竄がなされていないと判定する。ハッシュ値が同一でなかったときは、CPUコア101にアラーム(ALM)を出力して処理の中止等を促す。以上の手順をエミュレーション中、処理単位毎に繰り返し(ステップS08:No)、エミュレーションが終了した時点で処理を終える(ステップS08:Yes)。
以上の改竄検査により、以下のような効果が得られる。
(1)特定のハードウエアをソフトウエアでエミュレーションしている間は、ハッシュチェックのための間隔が長くなる。
(2)連続領域の読込が行われた場合、ハッシュチェックのための間隔が長くなる。逆に、シークした先頭セクタ付近では、高い確率でハッシュチェックが行われる。
(3)エミュレーションしている仮想処理時間と実処理時間の差分をみて、余裕があるときのみハッシュチェックが行われる。
すなわち、エミュレーション中、ハッシュチェックが行われる確率が高いのは、実処理のリソースが余っている状態のときや、処理プログラムが読み込まれたときとなる。逆に、連続領域の読込が行われているという現象は、読込の対象になっているのが画像、映像等のデータである場合が殆どである。従って、たとえその領域で改竄が行われていたとしても、エミュレーションに大きな影響を与える確率が低い。そのため、従来よりも検査回数を減らすことができる。このことを図示したのが図8である。
図8(a)は、一定間隔で特定の場所をハッシュチェックしていた従来例、図8(b)は、乱数で定まる間隔でハッシュチェックしていた従来例である。一定間隔であろうが乱数間隔であろうが、従来は、所定サイズ毎にハッシュチェックを行っていたので、実処理のリソースが検査に使われており、実処理の速度を遅くさせていた。これに対して、本実施例の改竄検査方法によれば、ハッシュチェックの回数は図8(c)のように少なくなり、差分のリソースを実処理にあてることができる。
このようにして、第1処理装置10のパフォーマンスを考慮した改竄検査が可能になる。
本実施形態は以上のとおりであるが、本発明は、上述した実施の形態例に限るものではなく、種々の態様での実施が可能である。例えば、本実施形態では、エミュレータ155が第1処理装置10に備えられる記録媒体に格納されたファームウエアであることを前提として説明したが、エミュレータ155を、外部から配布されたソフトウエアにより実現することもできる。すなわち、第1処理装置10が読み取り可能な記録媒体に記録されたものを図示しないメモリにインストールすることによって、ソフトウエア的にエミュレータ155の機能を形成することができる。
また、本実施形態では、エミュレーションの場合を例に挙げて説明したが、エミュレータ以外の一般的なソフトウエアについての改竄検査にも本発明を適用することができる。
また、本実施形態では、ハッシュチェックによって改竄の有無を検査する場合の例を示したが、暗号鍵/復号鍵その他のセキュリティデータを用いて改竄の有無を検査することも可能である。
本発明は、ネットワーク配信によってプログラムやデータを含むソフトウエアを公衆に配信する場合の当該ソフトウエアの改竄検査を要するすべての分野に利用することができる。
本発明が適用されるネットワーク配信システムの概要説明図。 第1処理装置のハードウエア構成図。 第2処理装置のハードウエア構成図。 本実施形態によるエミュレータの機能構成図。 改竄検査処理の手順説明図。 仮想処理時間と実処理時間との関係説明図。 複数の処理単位で連続して過大な負荷が生じているときの検査タイミングの説明図。 (a)は一定間隔で検査する従来のタイミング例、(b)は乱数間隔で検査する従来のタイミング例、(c)は本実施形態による検査のタイミング例を示す。
符号の説明
10、50・・・処理装置、20,60・・・メモリデバイス、30・・・パーソナルコンピュータ(PC)、40・・・プログラムサーバ、PN・・・公衆通信網、101・・・CPUコア、102・・・FPU、103・・・V−FPU、111・・・サブCPU、112・・・サブメモリ、121・・・GPUコア、122・・・VRAM、123・・・TFT、131・・・SPUコア、141・・・メディアデコーダ、151・・・DMAC、152・・・RTC、153・・・タイマ、154・・・セキュリティチップ、155・・・エミュレータ、156・・・メモリI/O、1551・・・負荷監視部、1552・・・検査部、1553・・・ハッシュ管理部、1554・・・アーキテクチャ情報ファイル、1555・・・ルールファイル、1556・・・関数ファイル、1557・・・ハッシュ値ファイル。

Claims (10)

  1. 処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段と、
    前記ソフトウエアに対する改竄の有無を検査する検査手段と、
    前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、
    前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段とを有する、
    ソフトウエアの改竄検査装置。
  2. 前記ソフトウエアは、それ自体で流通可能な可搬性の記録媒体に記録された、前記実行手段が実行可能な少なくとも一つの処理プログラムとコンテンツデータとを含むものであり、
    前記負荷監視手段は、前記仮想処理又は前記実処理の内容に関わらず、前記記録媒体から読み込まれるものが処理プログラムかコンテンツデータかによって異なる所定の確率で、前記検査を許容する、
    請求項1記載の改竄検査装置。
  3. 前記負荷監視手段は、前記記録媒体からの読込動作が複数の処理単位にわたって継続するときは、前記コンテンツデータについて割り当てられた確率で、前記検査を許容する、
    請求項2記載の改竄検査装置。
  4. 前記負荷監視手段は、前記実行手段がシークした先頭セクタでは、前記処理プログラムに割り当てられた確率で、前記検査を許容する、
    請求項2記載の改竄検査装置。
  5. 前記負荷監視手段は、前記アーキテクチャ情報に基づいて当該処理単位の仮想処理時間を推定するとともに、推定した仮想処理時間と前記実行手段における実処理時間とを比較し、前記実処理時間が前記仮想処理時間よりも短いことを検出したときに、前記検査を許容する、
    請求項1記載の改竄検査装置。
  6. 前記負荷監視手段は、前記仮想処理時間と前記実処理との差分の時間における前記検査を許容する、
    請求項5記載の改竄検査装置。
  7. 前記検査手段は、自己用に個性化されたハッシュ値及びこのハッシュ値を導出するためのハッシュ関数を保持するとともに、前記ソフトウエアに前記ハッシュ関数を適用して当該ソフトウエアのハッシュ値を導出し、導出したハッシュ値と保持されているハッシュ値とを比較してその同一性の有無を判定することにより前記検査を行う、
    請求項1乃至6のいずれかの項記載の改竄検査装置。
  8. それ自体で流通可能な可搬性の記録媒体に記録されているソフトウエアを実行する実行手段と、
    前記ソフトウエアに対する改竄の有無を検査する検査手段と、
    前記ソフトウエアの実行が予定される装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段と、
    前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、前記ソフトウエアの実行環境での前記検査手段による検査を許容できるかどうかを決定する負荷監視手段とを有する、
    ソフトウエアの改竄検査装置。
  9. 第2処理装置に読み込まれて使用されるソフトウエアを、前記第2処理装置とは異なるアーキテクチャの第1処理装置が電子的手段によって取得する過程と、
    前記ソフトウエアを取得した第1処理装置が、当該ソフトウエアのエミュレーションを自己のアーキテクチャのもとで実行するとともに、前記ソフトウエアの所定の処理単位毎に、予め保持されている前記第2処理装置のアーキテクチャの内容を表すアーキテクチャ情報に基づいて推定した仮想処理の内容と前記エミュレーションの実処理の内容とを比較することにより、エミュレーション中の検査を許容可能かどうかを決定し、許容できるときに、前記ソフトウエアに対する改竄の有無を検査する過程とを含む、
    ソフトウエアの改竄検査方法。
  10. コンピュータを、処理装置に読み込まれて使用されるソフトウエアを前記処理装置とは異なるアーキテクチャのもとでエミュレーションする実行手段、
    前記ソフトウエアに対する改竄の有無を検査する検査手段、
    前記処理装置のアーキテクチャの内容を表すアーキテクチャ情報を保持する保持手段、
    前記ソフトウエアの所定の処理単位毎に、前記保持手段に保持されている前記アーキテクチャ情報に基づいて推定した仮想処理の内容と前記実行手段における実処理の内容とを比較することにより、エミュレーション中の前記検査手段による検査を許容するかどうかを決定する負荷監視手段、として機能させるためのコンピュータプログラム。
JP2006313221A 2006-11-20 2006-11-20 ソフトウエアの改竄検査装置及び方法、コンピュータプログラム Active JP4896677B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006313221A JP4896677B2 (ja) 2006-11-20 2006-11-20 ソフトウエアの改竄検査装置及び方法、コンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006313221A JP4896677B2 (ja) 2006-11-20 2006-11-20 ソフトウエアの改竄検査装置及び方法、コンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2008129800A true JP2008129800A (ja) 2008-06-05
JP4896677B2 JP4896677B2 (ja) 2012-03-14

Family

ID=39555558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006313221A Active JP4896677B2 (ja) 2006-11-20 2006-11-20 ソフトウエアの改竄検査装置及び方法、コンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4896677B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009323A (ja) * 2008-06-26 2010-01-14 Ntt Docomo Inc イメージ検査装置、os装置及びイメージ検査方法
JP2020149605A (ja) * 2019-03-15 2020-09-17 日本電気株式会社 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001265217A (ja) * 2000-03-17 2001-09-28 Cti Co Ltd デジタルコンテンツの改ざん監視装置、改ざん監視方法及び記録媒体
JP2003288224A (ja) * 2002-03-28 2003-10-10 Fujitsu Ltd 処理装置、サーバ、およびプログラム
JP2004318449A (ja) * 2003-04-16 2004-11-11 Hitachi Ltd プログラム実行速度シュミレーション方法
JP2006018815A (ja) * 2004-06-30 2006-01-19 Microsoft Corp エミュレートされたコンピューティング環境を用いてオペレーティングシステムのライセンス収入を徴収するためのシステムおよび方法
JP2006053787A (ja) * 2004-08-12 2006-02-23 Ntt Docomo Inc プログラム実行装置及びプログラム実行方法
JP2006178936A (ja) * 2004-12-21 2006-07-06 Microsoft Corp 仮想マシンまたは強化オペレーティングシステムなどにおけるコンピュータのセキュリティ管理

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001265217A (ja) * 2000-03-17 2001-09-28 Cti Co Ltd デジタルコンテンツの改ざん監視装置、改ざん監視方法及び記録媒体
JP2003288224A (ja) * 2002-03-28 2003-10-10 Fujitsu Ltd 処理装置、サーバ、およびプログラム
JP2004318449A (ja) * 2003-04-16 2004-11-11 Hitachi Ltd プログラム実行速度シュミレーション方法
JP2006018815A (ja) * 2004-06-30 2006-01-19 Microsoft Corp エミュレートされたコンピューティング環境を用いてオペレーティングシステムのライセンス収入を徴収するためのシステムおよび方法
JP2006053787A (ja) * 2004-08-12 2006-02-23 Ntt Docomo Inc プログラム実行装置及びプログラム実行方法
JP2006178936A (ja) * 2004-12-21 2006-07-06 Microsoft Corp 仮想マシンまたは強化オペレーティングシステムなどにおけるコンピュータのセキュリティ管理

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009323A (ja) * 2008-06-26 2010-01-14 Ntt Docomo Inc イメージ検査装置、os装置及びイメージ検査方法
JP2020149605A (ja) * 2019-03-15 2020-09-17 日本電気株式会社 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システム
JP7218630B2 (ja) 2019-03-15 2023-02-07 日本電気株式会社 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システム

Also Published As

Publication number Publication date
JP4896677B2 (ja) 2012-03-14

Similar Documents

Publication Publication Date Title
CN102693379B (zh) 保护操作系统配置值
JP4522372B2 (ja) プロセッサと外部のデバイスとの間にセキュアセッションを実現する方法および装置
RU2589348C2 (ru) Энтропийные пулы для виртуальных машин
US8281362B2 (en) Verification method, verification program, recording medium, information processor, and integrated circuit
WO2018058811A1 (zh) 虚拟现实场景加载方法及设备
JP2007034875A (ja) ペリフェラルの使用管理方法、電子システム及びその構成装置
JP2013534001A (ja) 仮想化を用いた動画コンテンツの保護
CN108664774A (zh) 一种及时生成水印的方法、装置、存储介质及系统
CN105740661B (zh) 一种保护应用程序的方法和装置
JP4896677B2 (ja) ソフトウエアの改竄検査装置及び方法、コンピュータプログラム
JP2010039891A (ja) 情報処理装置、プログラム実行方法、プログラムおよび情報処理システム
EP2541456B1 (en) Method for protecting the digital contents of a solid state memory
JP4993146B2 (ja) フレームバッファに記憶された望まれないコンテンツの表示を阻止するためのシステム、方法、及びコンピュータプログラム
KR20120110660A (ko) 메모리에서 실행되는 컴퓨터 프로그램의 변조 탐지 방법
TWI811560B (zh) 資源整合系統及資源整合方法
CN116305221B (zh) 图像处理芯片系统的加密方法及相关装置
CN103699535B (zh) 网页加载方法及终端设备
CN102279913A (zh) 内容保护系统
JP4553660B2 (ja) プログラム実行装置
JP2018526717A (ja) イメージ制作中のコンテンツテスト
JP2010020561A (ja) 情報処理装置、画像処理装置、ソフトウェア動作テスト方法、ソフトウェア動作テストプログラム、及びそのプログラムを記録した記録媒体
JP5356583B2 (ja) 半導体記憶装置
CN117332412B (zh) 一种针对数据安全系统的检测方法、装置及电子设备
CN115296821B (zh) 一种用于数字藏品管理的数据处理系统
JP2008299930A (ja) 半導体記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090827

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100714

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100818

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111220

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111221

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4896677

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250