(57)【特許請求の範囲】
【請求項１】
読み出しの対象となるデータを格納した記録媒体から、当該読み出しの対象となるデータを読み出す制御部と、
前記制御部が読み出したデータを保持する記憶部と、
を含み、
前記制御部は、複数の処理要素を含んでなり、
前記複数の処理要素の間でデータを転送する際に、転送元の処理要素が、前記記憶部内の空き領域を探索して、探索の結果見出された複数の記憶領域のアドレス及びサイズを記録する転送リストを生成し、前記記録媒体に格納されている読み出し対象となるデータを、前記転送リストに記録された前記各記憶領域のサイズに応じたサイズの複数のセグメントに分割して順次読み出し、読み出したセグメントを前記各記憶領域に格納し、
転送先となる処理要素が、前記転送元の処理要素が生成した転送リストを参照して、当該転送リストに記録されたアドレスにより示される記憶領域から、当該転送リストに記録されたサイズに応じたサイズのセグメントに分割されたデータを順次取得して、当該取得したセグメントについてハッシュ値を演算し、
前記転送先の処理要素によって演算されたハッシュ値が、前記読み出し対象となるデータが正当か否かの判断に用いられることを特徴とするデータ読出装置。
【請求項２】
請求項１に記載のデータ読出装置において、
前記転送元の処理要素は、前記転送先となる処理要素が前記記憶領域の一つに格納されたセグメントを取得したと判断した場合に、当該記憶領域を空き領域とみなして、既に読み出されたセグメントに続く他のセグメントを読み出して、当該空き領域に格納することを特徴とするデータ読出装置。
【請求項３】
読み出しの対象となるデータを格納した記録媒体から、当該読み出しの対象となるデータを読み出す制御部であって、複数の処理要素を含む制御部と、
前記制御部が読み出したデータを保持する記憶部と、
を含むデータ読出装置を用い、
前記複数の処理要素の間でデータを転送する際に、転送元の処理要素が、
前記記憶部内の空き領域を探索し、探索の結果見出された複数の記憶領域のアドレス及びサイズを記録する転送リストを生成する手順と、
前記記録媒体に格納されている読み出し対象となるデータを、前記転送リストに記録された前記各記憶領域のサイズに応じたサイズの複数のセグメントに分割して順次読み出し、当該分割して読み出されたセグメントを前記各記憶領域に格納する手順と、
を実行し、
転送先となる処理要素が、
前記転送元の処理要素が生成した転送リストを参照して、当該転送リストに記録されたアドレスにより示される記憶領域から、当該転送リストに記録されたサイズに応じたサイズのセグメントに分割されたデータを順次取得して、当該取得したセグメントについてハッシュ値を演算する手順を実行し、
前記転送先の処理要素によって演算されたハッシュ値が、前記読み出し対象となるデータが正当か否かの判断に用いられることを特徴とする認証方法。
【請求項４】
読み出しの対象となるデータを格納した記録媒体から、当該読み出しの対象となるデータを読み出す制御部であって、複数の処理要素を含む制御部と、
前記制御部が読み出したデータを保持する記憶部と、を含むコンピュータにおいて、
前記複数の処理要素の間でデータを転送する際に、転送元の処理要素に、
前記記憶部内の空き領域を探索し、探索の結果見出された複数の記憶領域のアドレス及びサイズを記録する転送リストを生成する手順と、
前記記録媒体に格納されている読み出し対象となるデータを、前記転送リストに記録された前記各記憶領域のサイズに応じたサイズの複数のセグメントに分割して順次読み出し、当該分割して読み出されたセグメントを前記各記憶領域に格納する手順と、
を実行させ、
転送先となる処理要素に、
前記転送元の処理要素が生成した転送リストを参照して、当該転送リストに記録されたアドレスにより示される記憶領域から、当該転送リストに記録されたサイズに応じたサイズのセグメントに分割されたデータを順次取得して、当該取得したセグメントについてハッシュ値を演算する手順を実行させるプログラムであって、
前記転送先の処理要素によって演算されたハッシュ値が、前記読み出し対象となるデータが正当か否かの判断に用いられるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録媒体などからデータを読み出して、処理に供するデータ読出装置に関する。
【背景技術】
【０００２】
従来、不正なプログラムの実行等を防止する装置として、特許文献１に開示されているように、プログラムのハッシュ値を用いて、実行の可否を判断させるものがある。こうした装置では、実行が指示されたプログラム全体を記録媒体からメモリ上の所定連続領域に読み込み、当該所定連続領域内に読み込まれたプログラムのハッシュ値を演算して、認証処理を実行する。
【０００３】
また、実行の対象となるプログラムを暗号化しておき、実行時に復号するものもあるが、この場合も暗号化された状態のプログラム全体を一旦、メモリ上の所定連続領域に読み込んで処理を行っている。
【特許文献１】特開２００４−１３６０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このように、上記従来の方法で認証処理を行う場合、プログラムの全体を保持可能なサイズの連続領域をメモリ内に確保する必要がある。しかしながら、プログラムのサイズは、処理が高度化するにつれて大きくなり、プログラムの全体を保持できるサイズの連続領域の確保が困難になりつつある。
【０００５】
本発明は上記実情に鑑みて為されたもので、プログラムなど、認証の対象となるデータの全体を保持できるサイズの連続領域をメモリ内に確保することなく、認証処理を行うことができるデータ読出装置を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００６】
上記従来例の問題点を解決するための本発明は、データ読出装置であって、読み出しの対象となるデータを格納した記録媒体から、当該読み出しの対象となるデータを読み出す制御部と、前記制御部が読み出したデータを保持する記憶部と、を含み、前記制御部が、記憶部内に確保した複数の記憶領域についてのサイズの情報に基づいて、前記記録媒体に格納されている読み出し対象となるデータを、複数のセグメントに分割して読み出し、当該分割して読み出されたセグメントについて順次、認証情報を演算し、読み出し対象となったデータの認証処理を行うことを特徴としている。
【０００７】
またここで、前記制御部は、複数の処理要素を含んでなり、前記複数の処理要素の少なくとも一部が、前記複数に分割された各セグメントをそれぞれ分担して処理して部分認証情報を演算し、各処理要素によって演算された部分認証情報を用いて演算される認証情報が、前記読み出し対象となったデータの認証処理に供されることとしてもよい。
【０００８】
さらに、前記制御部は、複数の処理要素を含んでなり、前記複数の処理要素の間でデータを転送する際に、転送元の処理要素が、前記記憶部内に確保した複数の記憶領域のアドレス及びサイズを記録する転送リストを生成し、記憶部内に確保した複数の記憶領域についてのサイズの情報に基づいて、転送の対象となるデータを複数のセグメントに分割して、前記複数の記憶領域に格納し、転送先となる処理要素が、前記転送元の処理要素が生成した転送リストを参照しつつ、前記複数の記憶領域に格納されている、セグメントに分割されたデータを取得することとしてもよい。
【０００９】
また、本発明の一態様に係る認証方法は、読み出しの対象となるデータを格納した記録媒体から、当該読み出しの対象となるデータを読み出す制御部と、前記制御部が読み出したデータを保持する記憶部と、を含むデータ読出装置を用い、前記制御部に、前記記憶部内に確保した複数の記憶領域についてのサイズの情報に基づいて、前記記録媒体に格納されている読み出し対象となるデータを、複数のセグメントに分割して読み出し、当該分割して読み出されたセグメントについて順次、認証情報を演算し、読み出し対象となったデータの認証処理を行わせることを特徴としている。
【００１０】
さらに本発明の別の態様に係るプログラムは、読み出しの対象となるデータを格納した記録媒体から、当該読み出しの対象となるデータを読み出す制御部と、前記制御部が読み出したデータを保持する記憶部と、を含むコンピュータに、記憶部内に確保した複数の記憶領域についてのサイズの情報に基づいて、前記記録媒体に格納されている読み出し対象となるデータを、複数のセグメントに分割して読み出す手順と、当該分割して読み出されたセグメントについて順次、認証情報を演算し、読み出し対象となったデータの認証処理を行う手順と、を実行させることを特徴としている。
【発明を実施するための最良の形態】
【００１１】
本発明の実施の形態について図面を参照しながら説明する。本実施の形態のデータ読出装置は、例えばパーソナルコンピュータや、家庭用ゲーム機などであり、図１に示すように、制御部１１と、記憶部１２と、入出力ユニット１３と、外部記憶部１４と、操作部１５と、表示部１６とを含んで構成されている。
【００１２】
制御部１１は、例えばプロセッサチップであり、外部記憶部１４にセットされた外部記憶媒体から読み出されるプログラム（例えばパーソナルコンピュータによって実行されるアプリケーションや、ゲームプログラムなど）を記憶部１２に格納して実行する。本実施の形態の制御部１１の具体的な構成及び動作については、後に詳しく述べる。
【００１３】
記憶部１２は、ＲＡＭ（Random Access Memory）等の記憶素子を含んで構成され、制御部１１によって実行されるプログラムを保持する。また、この記憶部１２は、制御部１１が処理を行うときに必要となるデータを保持するワークメモリとしても動作する。
【００１４】
入出力ユニット１３は、いわゆるブリッジチップであり、制御部１１と、外部記憶部１４と、操作部１５とに接続されている。この入出力ユニット１３は、制御部１１から入力される指示に従って、制御部１１が出力する信号（出力信号）の出力先を選択し、当該選択した出力先に対して、制御部１１の出力信号を選択的に出力する。また、入出力ユニット１３は、外部記憶部１４や操作部１５から入力される信号を制御部１１に出力する。
【００１５】
外部記憶部１４は、例えばBlu-ray Discや、ＤＶＤ等の外部記録媒体から、記録されている情報を読み取って、入出力ユニット１３を介して制御部１１に出力する。本実施の形態では、この外部記憶部１４にセットされる外部記憶媒体には、プログラムが暗号化されて保持され、またプログラム全体から演算されるハッシュ値が、認証情報として保持されている。操作部１５は、例えばゲーム用のコントローラ、マウス、キーボード等であり、ユーザの操作を受け入れて、当該操作の内容を制御部１１に出力する。
【００１６】
表示部１６は、グラフィックス処理ボード等であり、制御部１１から入力される指示に従って、画像を描画し、当該描画した画像の情報を外部に接続されているディスプレイ（家庭用テレビジョン装置等）に出力して、表示させる。
【００１７】
ここで制御部１１の具体的な構成例について述べる。本実施の形態の制御部１１は、例えば、図２に示すように、複数の処理要素として、主制御ユニット２１と、少なくとも一つの補助制御ユニット２２と、外部インタフェース部２３とを含み、補助制御ユニット２２は、さらに、補助制御部３１と、この補助制御部３１に対応して設けられるローカルストレージ部３２、及びデータ転送部３３とを含んで構成されている。また、主制御ユニット２１は、主制御部４１と、キャッシュメモリ部４２とを含む。これら主制御ユニット２１と、各補助制御ユニット２２とは、内部バスＢを介して接続されている。
【００１８】
補助制御ユニット２２の補助制御部３１は、外部インタフェース部２３を介して取得されるプログラムや、ローカルストレージ部３２に格納されているプログラムに従って動作するプログラム制御デバイスである。本実施の形態の補助制御部３１は、例えば外部記憶部１４からプログラムを読み出して認証・復号の処理を行う。この認証・復号の処理については後に詳しく述べる。
【００１９】
ローカルストレージ部３２は、メモリ素子であり、補助制御部３１によって実行されるプログラムなどを保持するとともに、補助制御部３１のワークメモリとして動作する。データ転送部３３は、ＤＭＡ（Direct Memory Access）であり、記憶部１２内の指定されたメモリ領域からデータを読み出して、ローカルストレージ部３２に格納する。また、このデータ転送部３３は、補助制御部３１によって処理されたデータを、記憶部１２内の指定されたメモリ領域に格納する。このデータ転送部３３の動作についても、後に詳しく述べる。なお、ここでは記憶部１２から読み出すこととしたが、キャッシュメモリ部４２から読み出すこととしてもよい。データ転送部３３もまた、処理されたデータを記憶部１２の代わりにキャッシュメモリ部４２に格納してもよい。
【００２０】
主制御ユニット２１の主制御部４１は、例えばＣＰＵ等のプログラム制御デバイスであり、キャッシュメモリ部４２や、記憶部１２に格納されているプログラムに従って動作する。この主制御部４１は、外部記憶部１４から、外部記憶媒体に格納されているデータを読み出す際には、当該データの認証・復号に関する処理を実行する。この主制御部４１の処理の内容についても、後に詳しく述べる。
【００２１】
キャッシュメモリ部４２は、記憶素子であり、主制御部４１によって実行されるプログラムを保持する。また、このキャッシュメモリ部４２は、主制御部４１のワークメモリとしても動作する。外部インタフェース部４３は、記憶部１２と入出力ユニット１３と外部記憶部１４と操作部１５と表示部１６とを含む外部の各部とデータを送受する。
【００２２】
次に、本実施の形態のデータ読み取り装置が、実行の対象となるプログラムなどのデータを認証する際の動作について述べる。なお、ここでは、プログラムの認証を例として説明することとし、また認証されるプログラムは、暗号化されているものとし、当該暗号化されているプログラムの読み出し及び、復号されたプログラムの実行は主制御ユニット２１によって行われ、認証や復号の処理は補助制御ユニット２２によって行われるものとする。
【００２３】
［主制御ユニット−補助制御ユニット間のデータ転送］
このため制御部１１では、認証の対象となるプログラムの少なくとも一部が、主制御ユニット２１から補助制御ユニット２２のローカルストレージ部３２内に転送されることになる。この転送は、データ転送部３３によって行われる。そこでまず、具体的なデータ転送部３３の動作例の一つを説明する。ここで説明する動作例では、データ転送部３３は、図３に示すように、転送リストとして、読み出し転送リスト（Ｒ）と、書込み転送リスト（Ｗ）とのデータを参照して、記憶部１２との間でデータの転送を行う。
【００２４】
ここで図３に示す読み出し転送リストは、ヘッダ部（Ｈ）と、リスト部（Ｌ）とを含んでなり、リスト部には、実効アドレス（ＥＡ）と、サイズ情報（ＳＺ）と、有効フラグ（ＶＥ）と、読み込み完了を表すフラグ（完了フラグＲＣ）とを互いに関連づけてなるエントリーが少なくとも一つ保持される。ここで実効アドレス（ＥＡ）は、記憶部１２上のアドレス値を指す。ここで有効フラグは、転送の対象となるデータが記憶部１２上に用意できたことを表す「有効」と、転送の対象となるデータが未だ用意されていないことを表す「無効」とのいずれかを表す値に設定され、完了フラグは、処理が完了していないことを表す「未了」と、処理が完了したことを表す「完了」とのいずれかを表す値に設定される。当初、有効フラグは「無効」に、完了フラグは「未了」に設定される。
【００２５】
主制御部４１は、図４に示すように記憶部１２内で空き領域を探索する（Ｓ１）。そして探索の結果見いだされた領域（この時点で有意なデータが格納されていない領域）のアドレス値を実効アドレスとして読み出し転送リスト（Ｒ）を、補助制御ユニット２２ごと（つまりデータ転送部３３ごと）に生成し、記憶部１２に格納する（Ｓ２）。ここでは有効フラグは「無効」、完了フラグは「未了」に設定される。
【００２６】
主制御部４１は、例えば実行の対象となるプログラム等のデータを外部インタフェース部４３を介して外部記憶部１４側から取得し、処理Ｓ１にて見いだした領域のうち、読み出し転送リスト上のエントリの有効フラグが「無効」となっている領域に、各領域のサイズ分ずつのデータのセグメントに分割しながら順次、格納する（Ｓ３）。そして格納を完了した領域に係る読み出し転送リスト上のエントリの有効フラグを「有効」に設定する。
【００２７】
補助制御ユニット２２のデータ転送部３３は、所定の複写タイミングで、対応して作成されている読み出し転送リストを、記憶部１２から読み出して、ローカルストレージ部３２に複写する（Ｓ４）。
【００２８】
なお、補助制御ユニット２２が以下の処理を行っている間、主制御部４１は、完了フラグが「完了」に設定されているエントリを読み出し転送リストから見いだすと、当該エントリの有効フラグを「無効」、完了フラグを「未了」に再設定しておく（Ｓ５）。また、主制御部４１は、有効フラグが「無効」である領域に対して、実行の対象となるプログラム等のデータを外部インタフェース部４３を介して外部記憶部１４側から取得して格納する処理Ｓ３から繰り返して処理を続け、データの読み出しが完了するまで処理を継続する。
【００２９】
補助制御ユニット２２のデータ転送部３３は、ローカルストレージ部３２に複写した読み出し転送リストを参照して、先頭のエントリーから順に注目エントリーとして選択する（Ｓ６）。そして当該注目エントリーに含まれる有効フラグが「有効」であり、かつ完了フラグが「未了」を表すものとなっているか否かを調べる（Ｓ７）。
【００３０】
ここで、有効フラグが「有効」であり、かつ完了フラグが「未了」を表すものとなっていなければ、処理を中断する。また、有効フラグが「有効」であり、かつ完了フラグが「未了」を表すものとなっていれば、注目エントリーの実効アドレスによって表される記憶部１２上のアドレスから、注目エントリーのサイズ情報によって示されるサイズのデータを読み出して、ローカルストレージ部３２に格納し（Ｓ８）、注目エントリーの完了フラグを「完了」に設定する（Ｓ９）。
【００３１】
データ転送部３３は、ローカルストレージ部３２内の読み出し転送リストの内容を更新すると、当該更新された読み出し転送リストを記憶部１２に上書きして格納する（Ｓ１０）。すなわち、このデータ転送部３３は、絶えず記憶部１２とローカルストレージ部３２との間で、読み出し転送リストの同期を行うよう動作している。そしてデータ転送部３３は、処理Ｓ４から繰り返して処理を続ける。
【００３２】
なお、補助制御ユニット２２が読み出し転送リストをローカルストレージ３２に複写してから（処理Ｓ４）、ローカルストレージ３２にて更新した読み出し転送リストを記憶部１２に書き戻すまで（処理Ｓ１０）の間、主制御ユニット２１による読み出し転送リストのエントリにおける有効フラグ等の設定については、待ち行列に格納しておき、処理Ｓ１０にて書き戻された後に設定を反映させる。また、主制御ユニット２１が有効フラグ等の設定を書込んでいる間は、補助制御ユニット２２は複写処理（処理Ｓ４）を待機することとしてもよい。
【００３３】
補助制御部３１は、処理Ｓ８にて読み出され、ローカルストレージ３２に格納されたデータについて、復号、認証などの処理を実行する。
【００３４】
また、補助制御部３１と主制御部４１とは、図５に示すように、データ転送部３３に対して、ローカルストレージ部３２に格納されているデータを、記憶部１２へと転送させる指示を行う。この指示は、書込み転送リスト（Ｗ）を用いて行われる。この書込み転送リストは、主制御部４１によって生成されるものであり、図３に示した読み出し転送リストと同様の構造を有しており、ヘッダ部と、リスト部とを含む（不図示）。ここでリスト部には、実効アドレスと、サイズ情報と、有効フラグと、書込み完了を表すフラグ（完了フラグ）とを互いに関連づけてなるエントリーが少なくとも一つ保持される。ここで実効アドレスは、記憶部１２上のアドレス値を指す。ここで有効フラグは、データを保持する空き領域が用意できたことを表す「有効」と、データを保持する空き領域が未だ用意されていないことを表す「無効」とのいずれかを表す値に設定され、完了フラグは、処理が完了していないことを表す「未了」と、処理が完了したことを表す「完了」とのいずれかを表す値に設定される。当初、有効フラグは「無効」に、完了フラグは「未了」に設定される。
【００３５】
すなわち、主制御部４１は、記憶部１２内で空き領域を探索する処理を所定のタイミングごとに行っている（Ｓ１１）。主制御部４１が空き領域を少なくとも一つ見いだすと、書込み転送リストのエントリーから、有効フラグが「無効」となっているエントリーを見いだし、当該エントリーの実効アドレスと、サイズとを、記憶部１２上で見いだした空き領域の実効アドレスおよびサイズに設定する。さらに有効フラグを「有効」に設定する（Ｓ１２）。
【００３６】
一方、補助制御部３１は、主制御部４１の処理とは非同期的にローカルストレージ部３２から記憶部１２へと書き出すべきデータの処理（例えば、復号、認証等の処理）を実行しているが、この処理が完了すると、当該データが格納されているローカルストレージ部３２上のアドレスおよびサイズ（以下、このアドレスとサイズの情報とを区別のためそれぞれ「対象アドレス」、「対象サイズ」と呼ぶ）とともに、データの書き出しの指示をデータ転送部３３に出力する（Ｓ１３）。
【００３７】
データ転送部３３は、このデータの書き出しの指示を受けると、書込み転送リストを参照して、有効フラグが「有効」、完了フラグが「未了」となっており、かつ、サイズの情報が、対象サイズ以上であるエントリーを探索する（Ｓ１４）。ここで、かかるエントリーが見いだされたときには、記憶部１２の当該エントリーに含まれる実効アドレス以下の空き領域に、対象アドレスから対象サイズ分のデータを転送する（Ｓ１５）。この転送が完了すると、データ転送部３３は、当該エントリーの完了フラグを「完了」に設定する（Ｓ１６）。
【００３８】
データ転送部３３は、また、有効フラグが「有効」、完了フラグが「未了」となっているが、サイズの情報が対象サイズ未満であるエントリーが複数見いだされたときには、次のように処理してもよい。すなわち、データ転送部３３は、上記見いだした複数のエントリーをサイズ情報の大きい順に並べ替えて、その順序で、順次サイズの和を演算する。この演算の途中で、和が対象サイズを超えた場合は、そこまでに和に含めたエントリーを注目エントリー群として、書き込みの対象となるデータを、当該注目エントリー群のサイズに分割して、各実効アドレス以下の各空き領域に、分割後のデータを転送する。そして、注目エントリー群に含まれる各完了フラグを「完了」に設定する。また、リストの先頭から順にエントリーを探索して、有効フラグが「有効」、完了フラグが「未了」であるエントリーに示される実効アドレスからサイズ情報に示されるサイズ分順次転送してもよい。これにより転送の対象となるデータは各サイズ分ごとのデータごとに分割されるが、転送を行なうことができる。
【００３９】
［認証処理］
次に、本実施の形態のデータ読み出し装置がプログラムを認証する動作について述べる。外部記憶部１４に、外部記憶媒体がセットされ、プログラムの実行が指示されると、主制御ユニット２１の主制御部４１が、記憶部１２内の空き領域を探索する。ここで、空き領域のサイズは、プログラムの全体が格納できるサイズでなくてもよく、また領域が連続している必要もなく、断片的なものでかまわない。また、主制御部４１は、記憶部１２上に、復号後のプログラムを格納する連続領域を確保しておく。
【００４０】
主制御部４１は、見いだされた空き領域の先頭実効アドレスおよびサイズの情報を取得し、読み出し転送リストを生成する。例えば、記憶部１２内において、１２８キロバイト（以下、１２８ｋなどと略記する）、１２ｋ、２５６ｋ、３２ｋ、４ｋ、２４ｋ、１０２４ｋ、２４ｋの８つの空き領域が見いだされたとすると、主制御部４１が生成する読み出し転送リストは、図６に示すような状態となる。また、主制御部４１は、見いだした空き領域のサイズに応じて、外部記憶媒体に格納されているプログラムを複数のセグメント（プログラムセグメント）に分割して読み出し、各プログラムセグメントを対応するサイズの空き領域に書き込む。
【００４１】
例えば、上記の例の場合、主制御部４１は、外部記憶媒体に格納されているプログラムを、これらのサイズに従って、先頭から各サイズの和である、１５０４ｋ分を読み出し、さらに読出した部分を１２８ｋ、１２ｋ、２５６ｋ、３２ｋ、４ｋ、２４ｋ、１０２４ｋ、２４ｋの８つのセグメントに分割して、各空き領域に格納する。
【００４２】
さらに、主制御部４１は、読み出し転送リスト上のエントリーのうち、プログラムセグメントを書き込んだ領域に対応するエントリーの有効フラグを「有効」に変更して、読み出し転送リストを更新する。そして主制御部４１は、読み出し転送リストを更新した旨を、データ転送部３３へ通知する。また、主制御部４１は、同様にして書込み転送リストを生成する。
【００４３】
データ転送部３３では、更新の通知を受けるタイミングを複写タイミングとして、読み出し転送リストを、ローカルストレージ部３２に複写する。
【００４４】
データ転送部３３は、さらに、ローカルストレージ部３２に複写した読み出し転送リストを参照して、先頭のエントリーから順に有効フラグが「有効」となっており、かつ完了フラグが「未了」となっているものを探索する。そして、有効フラグが「有効」、かつ完了フラグが「未了」となっているエントリーの実効アドレスによって表される記憶部１２上のアドレスから、当該エントリーのサイズ情報によって示されるサイズのプログラムセグメントを読み出して、ローカルストレージ部３２に格納する。
【００４５】
上記の例では、まず１２８ｋ分のプログラムセグメントがローカルストレージ部３２に転送され、以下、１２ｋ、２５６ｋ、３２ｋ、４ｋ、２４ｋ、１０２４ｋ、２４ｋの各プログラムセグメントがローカルストレージ部３２に転送される。データ転送部３３は、転送を完了したエントリーの完了フラグを「完了」に変更する。データ転送部３３は、読み出し転送リストの末尾のエントリーまで探索を終えると、再度、先頭のエントリーに戻って探索の処理を続ける。
【００４６】
また、データ転送部３３は、読み出し転送リストを更新すると、これを記憶部１２に上書きする。主制御部４１では、読み出し転送リストを所定のタイミングごとに参照し、完了フラグが「完了」となっているエントリーがあるか否かを調べる。ここで、完了フラグが「完了」となっているエントリーがあれば、当該エントリーに含まれるサイズの情報を参照して、外部記憶媒体に格納されているプログラムのうち、引き続く（読出し済みの部分に続く）位置から、当該参照したサイズ情報によって表されるサイズ分のプログラム部分をプログラムセグメントとして読み出して、記憶部１２上で、上記エントリーに含まれる実効アドレスの情報によって示されるアドレス以下に格納する。そして、当該エントリーの有効フラグを「有効」、完了フラグを「未了」に設定する。
【００４７】
一方、補助制御部３１は、ローカルストレージ部３２に格納されたプログラムの部分データを読み出して、当該読み出した部分データ（プログラムセグメント）を処理の対象として、復号処理を行い、復号の結果をローカルストレージ部３２に格納する。そして、補助制御部３１は、この処理対象となったプログラムセグメントの認証処理を行う。ここで認証処理は、処理の対象となったプログラムセグメントについて認証情報の一例としてのハッシュ値を演算する処理である。なお、一連のデータ全体についてのハッシュ値の演算は、当該データの途中で演算を中断しても、当該途中の点から演算を再開できるようになっているものとする。このような演算を行うことのできるハッシュ値は、広く知られているので、ここでの詳細な説明を省略する。
【００４８】
補助制御部３１は、過去のハッシュ値の演算結果がローカルストレージ部３２に格納されているときには、当該演算結果と、対象となったプログラムセグメントとを用いてハッシュ値の演算を行い、その演算結果をローカルストレージ部３２に格納する。なお、過去のハッシュ値の演算結果がローカルストレージ部３２に格納されていないとき（ハッシュ値の演算を開始したとき）には、対象となったプログラムセグメントとを用いてハッシュ値の演算を行い、その演算結果をローカルストレージ部３２に格納する。
【００４９】
補助制御部３１は、復号済みのプログラムセグメントの格納先のアドレス（対象アドレス）とサイズ（対象サイズ）とを含む、データの書き出しの指示を、データ転送部３３に出力する。
【００５０】
データ転送部３３は、補助制御部３１からデータの書き出しの指示を受けると、書込み転送リストを参照して、先頭のエントリーから順に、有効フラグが「有効」、完了フラグが「未了」となっているエントリーを探索する。ここで、かかるエントリーが見いだされたときには、記憶部１２上の当該エントリーに含まれる実効アドレス以下の空き領域に、対象アドレスから始まる、対象サイズ分のデータを転送する。この転送が完了すると、データ転送部３３は、当該エントリーの完了フラグを「完了」に設定する。
【００５１】
主制御ユニット２１の主制御部４１は、読み出し転送リストと、書込み転送リストとを所定のタイミングごとに調べる。そして読み出し転送リストのエントリーのうち、完了フラグが「完了」となっているエントリーを見いだすと、当該エントリーの有効フラグを「無効」に設定して、空き領域に戻す。この処理により、当該完了フラグが「完了」となったエントリーで示される実効アドレス以下の領域が空き領域となり、再度書込みの処理に利用できるようになる。
【００５２】
また、書込み転送リストのエントリーのうち、完了フラグが「完了」となっているエントリーを見いだすと、そのエントリーに含まれる実効アドレスとサイズの情報とを参照して、記憶部１２の、当該実効アドレスを先頭とし、サイズの情報によって表されるサイズのデータ（復号後のプログラムセグメント）を、記憶部１２上のプログラムの格納領域に複写する。そして、上記エントリーの完了フラグをリセットして、「未了」の状態とする。
【００５３】
主制御部４１は、外部記憶媒体に格納されているプログラムの末尾まで読み出すと、処理の終了を補助制御部３１に通知するとともに、読み出し転送リストの各エントリーの有効フラグを「無効」に設定する。
【００５４】
補助制御部３１は、処理の終了の通知を受けた後、ローカルストレージ部３２内に転送されたプログラムセグメントについて、ハッシュ値の演算を終了すると、外部記憶媒体に格納されているハッシュ値の情報と、演算されたハッシュ値の情報を比較し、一致していれば、正当なプログラムであると判断し、その判断結果を、当該演算の結果を主制御部４１に通知する。
【００５５】
このとき、記憶部１２には、補助制御ユニット２２によって復号されたプログラムが格納されていることとなるので、主制御部４１は、補助制御部３１からの通知を確認して、正当なプログラムであると判断された場合に、当該復号されたプログラムを実行する。なお、正当なプログラムであると判断されなかった場合は、当該プログラムの実行を行わないようにしてもよい。
【００５６】
なお、ここまでの説明では、補助制御部３１を一つだけ利用する場合を例として説明したが、既に述べたように、主制御部４１が複数の補助制御ユニット２２のそれぞれに対応した読み出し転送リスト、及び書込み転送リストの生成・更新を行い、各補助制御ユニット２２が対応した読み出し転送リストや書込み転送リストを用いて認証の対象となるプログラムセグメントを取得して認証や復号の処理を行うようにしてもよい。このように複数の補助制御ユニット２２に対応した読み出し転送リストなどが生成され、各補助制御ユニット２２が認証の対象となるプログラムセグメントを分担して処理することで、処理効率が向上する。
【００５７】
この場合、主制御部４１は、認証の処理を行った各補助制御ユニット２２から、認証処理の結果（例えばハッシュ値の元となる情報、すなわち部分認証情報）を受け入れて、ハッシュ値を生成し、当該生成したハッシュ値を用いて認証の処理を行うこととする。
【００５８】
また、この場合、各補助制御ユニット２２に対応する読み出し転送リストや書込み転送リストには、それぞれ所定数のエントリーを含み、転送リストのサイズを固定長としておいてもよい。
【００５９】
本実施の形態によると、プログラムなど、認証の対象となるデータを分割して認証を行うので、その全体を保持可能なサイズの連続領域をメモリ内に確保することなく認証処理を行うことができる。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態に係るデータ読出装置の例を表す構成ブロック図である。
【図２】本発明の実施の形態に係る制御部の内容例を表す構成ブロック図である。
【図３】本発明の実施の形態に係る読み出し転送リストの構造例を表す説明図である。
【図４】本発明の実施の形態に係るデータの転送処理例を表す流れ図である。
【図５】本発明の実施の形態に係るデータの転送処理例を表す流れ図である。
【図６】本発明の実施の形態に係る読み出し転送リストの内容例を表す説明図である。
【符号の説明】
【００６１】
１１  制御部、１２  記憶部、１３  入出力ユニット、１４  外部記憶部、１５  操作部、１６  表示部、２１  主制御ユニット、２２  補助制御ユニット、３１  補助制御部、３２  ローカルストレージ部、３３  データ転送部、４１  主制御部、４２  キャッシュメモリ部、４３  外部インタフェース部。
【図１】
0004527640.tif 000002
【図２】
0004527640.tif 000003
【図３】
0004527640.tif 000004
【図４】
0004527640.tif 000005
【図５】
0004527640.tif 000006
【図６】
0004527640.tif 000007