(57)【要約】【課題】  簡易な構成でありながら、一段と乱数性の高い乱数を生成し得る信号処理装置を実現する。【解決手段】  シリアルバス２２を介して不揮発性メモリ２１への空読みを行ってからフリーランカウンタ２０ｃのカウンタ値を取得することにより、シリアルバス２２の処理時間のゆらぎをこのカウンタ値に反映させて不定なカウンタ値を得ることができると共に、この不定なカウンタ値をｓｅｅｄとして擬似乱数を生成することにより、一段と乱数性の高い乱数を生成することができ、また多くの一般的なデータ処理回路に実装されるバスと、バスの処理時間のゆらぎよりもカウント周期の短いカウンタとを実装するだけでよいため、別途ＲＴＣを実装する場合と比して、構成を簡略化することができ、かくして、簡易な構成でありながら、一段と乱数性の高い乱数を生成することができる。【選択図】          図２
2006235995.tif 000002
【特許請求の範囲】
【請求項１】
信号処理部と、
上記信号処理部とバスを介して接続されるメモリと
を具え、
上記信号処理部は、
上記バスの処理時間のゆらぎよりもカウント周期の短いカウンタと、
乱数種から乱数を生成する乱数生成部と、
外部からの要求に応じて上記乱数生成部の動作を制御する制御部と
を有し、
上記カウンタは、上記信号処理部の起動と共にカウントを開始し、
上記制御部は、外部からの乱数を要求する乱数要求情報に応じて、上記乱数生成部に対して当該乱数要求情報を転送し、
上記乱数生成部は、上記乱数要求情報に応じて、上記バスを介して上記メモリとデータの送受信をしてから上記カウンタのカウンタ値を取得し、当該取得したカウンタ値に対応する乱数種から乱数を生成する
ことを特徴とする信号処理装置。
【請求項２】
上記乱数生成部は、上記乱数要求情報に応じて、上記バスを介して上記メモリの特定位置からデータを読み出す
ことを特徴とする請求項１に記載の信号処理装置。
【請求項３】
上記カウンタ値からハッシュ値を生成するハッシュ値生成部を具え、
上記乱数生成部は、上記乱数要求情報に応じて、上記バスを介して上記メモリとデータの送受信をしてから上記ハッシュ値生成部のハッシュ値を取得し、当該取得したハッシュ値に対応する乱数種から乱数を生成する
ことを特徴とする請求項１に記載の信号処理装置。
【請求項４】
上記バスは、シリアルバスである
ことを特徴とする請求項１に記載の信号処理装置。
【請求項５】
バスを介して接続されるメモリを有する信号処理装置による信号処理方法において、
起動時に、上記バスの処理時間のゆらぎよりも短いカウント周期でカウントを開始するカウント開始ステップと、
外部からの乱数を要求する乱数要求情報に応じて、上記バスを介して上記メモリとデータの送受信をしてから、上記カウンタのカウンタ値を取得するカウンタ値取得ステップと、
上記カウンタ値取得ステップで取得した上記カウンタ値に対応する乱数種から乱数を生成する乱数生成ステップと
を具える
ことを特徴とする信号処理方法。
【請求項６】
バスを介して接続されるメモリを有する信号処理装置に対して、
起動時に、上記バスの処理時間のゆらぎよりも短いカウント周期でカウントを開始するカウント開始ステップと、
外部からの乱数を要求する乱数要求情報に応じて、上記バスを介して上記メモリとデータの送受信をしてから、上記カウンタのカウンタ値を取得するカウンタ値取得ステップと、
上記カウンタ値取得ステップで取得した上記カウンタ値に対応する乱数種から乱数を生成する乱数生成ステップと
を実行させることを特徴とする信号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は信号処理装置に関し、特に擬似乱数を生成する信号処理装置に適用して好適なものである。
【背景技術】
【０００２】
近年、インターネット等のネットワークを介した種々のコンテンツ配信サービスが広く普及している。このようなコンテンツ配信サービスでは、ＣＤやＤＶＤといった媒体を介してではなく、コンテンツのデータ（以下、これをコンテンツデータとも呼ぶ）そのものを所定のサーバからネットワークを介してユーザの端末に提供するようになされているため、コンテンツの不正利用を防止することがいっそう強く求められており、このため様々なセキュリティ対策が講じられている。
【０００３】
かかるセキュリティ対策としては、例えばサーバ及び端末間でのユーザ認証処理やデータの送受信処理等に擬似乱数を用いた暗号化を利用することで、これらの処理が外部から解析・改竄されることを防止して、コンテンツの不正利用を防止する方法が広く知られている。
【０００４】
ところで、このように擬似乱数を利用する場合、いかに予測が困難で乱数性の高い擬似乱数を生成し得るかがセキュリティの上でも重要となる。そこで従来、例えば、ＲＴＣ（リアル・タイム・クロック）から得られる現在時刻を、擬似乱数の乱数種（以下、これをｓｅｅｄとも呼ぶ）とし、このｓｅｅｄから擬似乱数を生成することで、擬似乱数の乱数性を高めるようになされたものがある（例えば特許文献１参照）。
【特許文献１】特開２００２−３４４４４４公報（段落番号〔００５３〕）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようにＲＴＣを利用する場合、擬似乱数を生成する装置（例えばユーザの端末）に、ＲＴＣを別途実装する必要があり、しかもこのＲＴＣは他の回路との統合が難しいため、実装が複雑になり、結果として端末のコストが上がるという問題があった。
【０００６】
本発明は以上の点を考慮してなされたもので、簡易な構成でありながら、一段と乱数性の高い乱数を生成し得る信号処理装置を提案しようするものである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するため本発明の信号処理装置においては、信号処理部と、信号処理部とバスを介して接続されるメモリとを設け、信号処理部が、バスの処理時間のゆらぎよりもカウント周期の短いカウンタと、乱数種から乱数を生成する乱数生成部と、外部からの要求に応じて乱数生成部の動作を制御する制御部とを有し、カウンタが、信号処理部の起動と共にカウントを開始し、制御部が、外部からの乱数を要求する乱数要求情報に応じて、乱数生成部に対して当該乱数要求情報を転送し、乱数生成部が、乱数要求情報に応じて、バスを介してメモリとデータの送受信をしてからカウンタのカウンタ値を取得し、当該取得したカウンタ値に対応する乱数種から乱数を生成するようにした。
【０００８】
このようにこのデータ処理回路では、バスを介してメモリとデータの送受信をしてからカウンタのカウンタ値を取得することにより、バスの処理時間のゆらぎをカウンタ値に反映させて不定なカウンタ値を得ることができ、そしてこの不定なカウンタ値に対応する乱数種から乱数を生成することにより、一段と乱数性の高い乱数を生成することができる。
【０００９】
また、このデータ処理回路では、多くの一般的な信号処理回路に実装されるバスと、バスの処理時間のゆらぎよりもカウント周期の短いカウンタとを実装するだけでよく、別途ＲＴＣを実装する場合と比して、構成を簡略化することができる。
【発明の効果】
【００１０】
本発明によれば、バスを介してメモリとデータの送受信をしてからカウンタのカウンタ値を取得することにより、バスの処理時間のゆらぎをカウンタ値に反映させて不定なカウンタ値を得ることができ、そしてこの不定なカウンタ値に対応する乱数種から乱数を生成することにより、一段と乱数性の高い乱数を生成することができ、また多くの一般的な信号処理回路に実装されるバスと、バスの処理時間のゆらぎよりもカウント周期の短いカウンタとを実装するだけでよいため、別途ＲＴＣを実装する場合と比して、構成を簡略化することができ、かくして、簡易な構成でありながら、一段と乱数性の高い乱数を生成し得る信号処理装置を実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下図面について、本発明の一実施の形態を詳述する。
【００１２】
（１）第１の実施の形態
（１―１）コンテンツ再生装置の構成
図１において、１は全体としてネットワークＮＴを介して配信される楽曲コンテンツを再生可能なコンテンツ再生装置を示し、当該コンテンツ再生装置１の筐体表面やリモートコントローラ（図示せず）に設けられた各種操作ボタンでなる操作入力部２がユーザによって操作されると、当該操作入力部２でこれを認識し、この操作に応じた操作入力信号を入力処理部３に送出する。入力処理部３は、供給される操作入力信号に対して所定の処理を施すことによりこの操作入力信号を操作コマンドに変換し、これをバス４を介してホストＣＰＵ（Central Processing Unit）５に送出する。
【００１３】
ホストＣＰＵ５は、ＲＯＭ（Read Only Memory）６又はハードディスクドライブ７に予め記憶されている基本プログラムやアプリケーションプログラム等の各種プログラムをバス４を介してＲＡＭ（Random Access Memory）８に読み出す。そしてこのホストＣＰＵ５は、これら各種プログラムをＲＡＭ７上に展開し、展開した各種プログラムに従って全体を制御すると共に、所定の演算処理や、入力処理部３から与えられる操作コマンドに応じた処理（例えばコンテンツ取得処理やコンテンツ再生処理等）を実行する。
【００１４】
実際上、ホストＣＰＵ５は、例えば、ユーザにより操作入力部２を介して楽曲コンテンツの取得操作が行われると、これに応じて、通信処理部９及びネットワークインタフェース１０を順次介して、ネットワークＮＴ上のコンテンツ配信サーバ（図示せず）にアクセスし、このコンテンツ配信サーバに対して楽曲コンテンツの配信を要求する要求信号を送信する。
【００１５】
コンテンツ配信サーバは、所定の暗号化を施したコンテンツデータ（以下、これを暗号化コンテンツデータとも呼ぶ）を蓄積しており、コンテンツ再生装置１からアクセスされると、このコンテンツ再生装置１との間で所定のユーザ認証処理を行い、コンテンツ再生装置１が正規ユーザであると確認できた場合にのみ、コンテンツ再生装置１から送られてくる要求信号に応じて、要求された楽曲コンテンツに対応する暗号化コンテンツデータを、ネットワークＮＴを介してコンテンツ再生装置１に送信する。またこのときコンテンツ配信サーバは、例えば要求された楽曲コンテンツが有料であれば、この楽曲コンテンツの配信にともなう対価をコンテンツ再生装置１のユーザに対して課金するための課金処理を実行する。
【００１６】
コンテンツ再生装置１のホストＣＰＵ５は、コンテンツ配信サーバから配信される暗号化コンテンツデータをネットワークインタフェース１０及び通信処理部９を順次介して取り込み、これをハードディスクドライブ７に記録する。
【００１７】
そしてホストＣＰＵ５は、ユーザにより操作入力部２を介してハードディスクドライブ７内の暗号化コンテンツデータに対する再生操作が行われると、これに応じて、指定された暗号化コンテンツデータをハードディスクドライブ７から読み出し、この暗号化コンテンツデータをデータ処理回路１１に送出する。データ処理回路１１は、暗号化コンテンツデータを復号することでコンテンツデータに戻し、これを音声処理部１２に送出する。音声処理部１２は、データ処理回路１１から与えられるコンテンツデータに対してデジタルアナログ変換処理やイコライジング処理等の音声処理を施し、この結果得られる音声信号をスピーカＳＰに送出して、スピーカＳＰからこの音声信号に基づく音声を出力する。
【００１８】
また、本実施の形態のデータ処理回路１１は、内部に擬似乱数生成器（詳細については後述する）を有しており、ホストＣＰＵ５からの命令に応じて擬似乱数を生成するようにもなされている。この擬似乱数は、コンテンツ再生装置１及びコンテンツ配信サーバ間でのユーザ認証処理や各種データの送受信処理等をホストＣＰＵ５が行う際に用いられ、またデータ処理回路１１内で行う復号処理やその他の処理等にも用いられる。
【００１９】
このように、このコンテンツ再生装置１では、データ処理回路１１で擬似乱数を生成し、この擬似乱数を、種々の処理で用いることにより、例えばユーザ認証処理やデータ処理回路１１内での処理等で扱うデータを、この擬似乱数で暗号化することにより、これらの処理及びこれらの処理で扱うデータが外部から容易に解析・改竄されることを防止して、楽曲コンテンツの不正利用を防止し得るようになされている。
【００２０】
ここで、実際上、データ処理回路１１内でどのように擬似乱数を生成するのかを、データ処理回路１１の内部構成と合わせて説明する。
【００２１】
（１−２）データ処理回路の内部構成及び擬似乱数の生成手順
まず、データ処理回路１１の内部構成について、図２を用いて説明する。この図２に示すように、データ処理回路１１は、ＤＳＰ（Digital Signal Processor）２０を構成するＩＣ（Integrated Circuit）チップと、不揮発性メモリ２１を構成するＩＣチップとを実装した回路基板として形成されている。また、これらＤＳＰ２０及び不揮発性メモリ２１は、回路基板上のシリアルバス２２によってシリアル接続されている。この不揮発性メモリ２１には、例えばＤＳＰ２０上で扱う各種データが記録されている。
【００２２】
ＤＳＰ２０は、自身の内部メモリ（図示せず）等に書き込まれるファームウェアに従って、種々の処理（上述の復号処理や擬似乱数の生成処理等）をソフトウェア的に実行し得る汎用のプロセッサであるが、ここではＤＳＰ２０が、擬似乱数生成用のファームウェアに従って動作する場合について説明するものとし、また説明の便宜上、擬似乱数を生成するためのソフトウェア的な機能を、機能ブロック（命令処理部２０ａ、擬似乱数生成器２０ｂ、フリーランカウンタ２０ｃ）に見立てて説明する。
【００２３】
ＤＳＰ２０は、ホストＣＰＵ５からの各種命令に応じて、命令処理部２０ａが全体（擬似乱数生成器２０ｂ及びフリーランカウンタ２０ｃ）を制御するようになされている。まず命令処理部２０ａは、ホストＣＰＵ５からの起動命令に応じて起動する（すなわちＤＳＰ２０が起動する）と共に、このときフリーランカウンタ２０ｃを起動させて、このフリーランカウンタ２０ｃにカウントを開始させる。
【００２４】
その後、命令処理部２０aは、ホストＣＰＵ５から乱数を要求する乱数要求命令を受け取ると、この乱数要求命令を擬似乱数生成器２０ｂに転送する。擬似乱数生成器２０ｂは、命令処理部２０ａから乱数要求命令を受け取ると、まずシリアルバス２２を介して不揮発性メモリ２１の所定アドレスから所定データを読み出す。そしてこの擬似乱数生成器２０ｂは、所定データの読み出しが完了した時点で、起動中のフリーランカウンタ２０ｃからカウンタ値を取得する。
【００２５】
このとき所定データの読出にかかる時間は、シリアルバス２２の処理時間のゆらぎによって変化するため不定であり、このためＤＳＰ２０が起動してから所定データの読み出しが完了するまでの時間も不定となる。
【００２６】
ここで、本実施の形態のデータ処理回路１１では、このシリアルバス２２の処理時間のゆらぎをフリーランカウンタ２０ｃのカウンタ値にも反映させるために、このゆらぎよりもカウンタ周期の短いフリーランカウンタ２０ｃを用いるようにした。これによりＤＳＰ２０が起動してから所定データの読み出しが完了するまでの間に、このフリーランカウンタ２０ｃによってカウントされるカウンタ値も、シリアルバス２２の処理時間のゆらぎにともなって不定となる。
【００２７】
このようにしてカウンタ値を取得した擬似乱数生成器２０ｂは、このカウンタ値をｓｅｅｄとして自身のｓｅｅｄ保持領域３０に格納した後、このｓｅｅｄから擬似乱数を生成し、これを命令処理部２０ａに送る。またこのとき擬似乱数生成器２０ｂは、生成した擬似乱数で、ｓｅｅｄ保持領域３０に格納されたｓｅｅｄを更新する。つまり、擬似乱数生成器２０ｂは、擬似乱数を生成する度に、生成した擬似乱数でｓｅｅｄを更新するようになされている。
【００２８】
擬似乱数生成器２０ｂから擬似乱数を受け取った命令処理部２０ａは、この擬似乱数をホストＣＰＵ５へ送る。
【００２９】
このように、擬似乱数生成器２０ｂは、乱数を要求されると、まずシリアルバス２２を介して不揮発性メモリ２１の所定アドレスから所定データを読み出す。この場合の所定データの読出は、シリアルバス２２の処理時間のゆらぎを利用してフリーランカウンタ２０ｃのカウンタ値を不定にするための処理であり、以下、これを空読みとも呼ぶ。このようにして不揮発性メモリ２１を空読みした後、擬似乱数生成器２０ｂは、空読みによって不定となるフリーランカウンタ２０ｃのカウンタ値を取得し、この不定なカウンタ値をｓｅｅｄとして擬似乱数を生成する。こうすることで擬似乱数生成器２０ｂは、不定なｓｅｅｄをもとに一段と乱数性の高い擬似乱数を生成することができる。
【００３０】
ここで、データ処理回路１１による擬似乱数の生成手順（以下、これを擬似乱数生成処理手順とも呼ぶ）について、図３のシーケンスチャートを用いて、より詳しく説明する。このシーケンスチャートは、ホストＣＰＵ５と、データ処理回路１１を構成するＤＳＰ２０（命令処理部２０ａ、擬似乱数生成器２０ｂ及びフリーランカウンタ２０ｃ）及び不揮発性メモリ２１とによる擬似乱数生成処理手順を示すものであり、このときホストＣＰＵ５はＲＯＭ６に記録してあるプログラムに従って、またＤＳＰ２０は内部メモリ（図示せず）に書き込まれたファームウェアに従って動作するようになされている。
【００３１】
ホストＣＰＵ５は、例えば電源投入時、あるいは操作入力部２を介した手動操作に応じて、ステップＳＰ１において、ＤＳＰ２０を起動させるためのＤＳＰ起動命令を、ＤＳＰ２０の命令処理部２０ａに送信する。
【００３２】
命令処理部２０ａは、ステップＳＰ２において、ホストＣＰＵ５からのＤＳＰ起動命令に応じて起動する（すなわちＤＳＰ２０が起動する）と共に、このときフリーランカウンタ２０ｃでカウントを開始させるためのカウンタ起動命令を、フリーランカウンタ２０ｃに送信する。フリーランカウンタ２０ｃは、ステップＳＰ３において、命令処理部２０ａからのカウンタ起動命令に応じて起動することにより、カウントを開始する。
【００３３】
その後、ホストＣＰＵ５は、例えば、擬似乱数を用いる特定の処理（ユーザ認証処理や各種データの送受信処理等）を実行するために擬似乱数が必要になると、ステップＳＰ４において、乱数要求命令を命令処理部２０ａに送信する。命令処理部２０ａは、ホストＣＰＵ５から乱数要求命令を受け取ると、ステップＳＰ５において、この乱数要求命令を擬似乱数生成器２０ｂに転送する。
【００３４】
擬似乱数生成器２０ｂは、命令処理部２０ａから乱数要求命令を受け取ると、ステップＳＰ６において、不揮発性メモリ２１の所定アドレスから所定データを読み出すため（すなわち空読みするため）のデータ読出命令を、シリアルバス２２を介して、不揮発性メモリ２１に送信する。不揮発性メモリ２１は、擬似乱数生成器２０ｂからデータ読出命令を受け取ると、ステップＳＰ７において、このデータ読出命令に応じて、所定アドレスに記録している所定データを、シリアルバス２２を介して擬似乱数生成器２０ｂに送信する。すなわち、擬似乱数生成器２０ｂが、不揮発性メモリ２１からシリアルバス２２を介して所定データを読み出す。
【００３５】
ここで、このステップＳＰ６及びステップＳＰ７の処理に要する時間は、上述したようにシリアルバス２２の処理時間のゆらぎにより不定となる。
【００３６】
そして、所定データの読み出しを完了すると、擬似乱数生成器２０ｂは、つづくステップＳＰ８（図４）に移り、このステップＳＰ８において、カウンタ値を要求するためのカウンタ値要求命令をフリーランカウンタ２０ｃに送信する。フリーランカウンタ２０ｃは、擬似乱数生成器２０ｂからカウンタ値要求命令を受け取ると、ステップＳＰ９において、このカウンタ値要求命令に応じて、この時点のカウンタ値を取得し、このカウンタ値を擬似乱数生成器２０ｂへ送信する。
【００３７】
ここで得られるカウンタ値は、ステップＳＰ３−ＳＰ４−ＳＰ５−ＳＰ６−ＳＰ７−ＳＰ８−ＳＰ９の処理に要した時間を示すものである。そして、このステップＳＰ３からステップＳＰ９までの処理の一部であるステップＳＰ６及びステップＳＰ７の処理に要する時間が不定であるため、処理全体の時間を示すカウンタ値も不定となる。
【００３８】
擬似乱数生成器２０ｂは、フリーランカウンタ２０ｃからカウンタ値を受け取ると、ステップＳＰ１０において、このカウンタ値でｓｅｅｄ保持領域３０のｓｅｅｄを初期化し、次のステップＳＰ１１に移る。つまり、フリーランカウンタ２０ｃから得たカウンタ値を、ｓｅｅｄの初期値とする。このときカウンタ値は不定であるため、ｓｅｅｄの初期値も不定となり、この結果、擬似乱数生成器２０ｂでは、ＤＳＰ２０を起動する度に毎回異なるｓｅｅｄを得ることができる。
【００３９】
ステップＳＰ１１において、擬似乱数生成器２０ｂは、ｓｅｅｄ保持領域３０に格納したｓｅｅｄから擬似乱数を生成し、次のステップＳＰ１２に移る。ステップＳＰ１２において、擬似乱数生成器２０ｂは、ステップＳＰ１１で生成した擬似乱数でｓｅｅｄ保持領域３０のｓｅｅｄを更新し、次のステップＳＰ１３に移る。ステップＳＰ１３において、擬似乱数生成器２０ｂは、生成した擬似乱数を命令処理部２０ａに対して出力する。
【００４０】
命令処理部２０ａは、擬似乱数生成器２０ｂから出力された擬似乱数を受け取ると、ステップＳＰ１４（図５）において、この擬似乱数をホストＣＰＵ５に返信する。
【００４１】
このように、データ処理回路１１では、シリアルバス２２の処理時間のゆらぎを利用して、不定なｓｅｅｄを得ることができ、この不定なｓｅｅｄをもとに一段と乱数性の高い擬似乱数を生成することができる。
【００４２】
その後、再び擬似乱数を用いる特定の処理を実行するために擬似乱数が必要になると、ホストＣＰＵ５は、ステップＳＰ１５において、再度、乱数要求命令を命令処理部２０ａに送信する。命令処理部２０ａは、ホストＣＰＵ５から乱数要求命令を受け取ると、ステップＳＰ１６において、この乱数要求命令を擬似乱数生成器２０ｂに転送する。
【００４３】
擬似乱数生成器２０ｂは、命令処理部２０ａから乱数要求命令を受け取ると、ステップＳＰ１７において、ｓｅｅｄ保持領域３０に格納したｓｅｅｄから擬似乱数を生成し、次のステップＳＰ１８に移る。ステップＳＰ１８において、擬似乱数生成器２０ｂは、ステップＳＰ１７で生成した擬似乱数でｓｅｅｄ保持領域３０のｓｅｅｄを更新し、次のステップＳＰ１９に移る。ステップＳＰ１９において、擬似乱数生成器２０ｂは、生成した擬似乱数を命令処理部２０ａに対して出力する。
【００４４】
命令処理部２０ａは、擬似乱数生成器２０ｂから出力された擬似乱数を受け取ると、ステップＳＰ２０において、この擬似乱数をホストＣＰＵ５に返信する。
【００４５】
このように、データ処理回路１１では、ＤＳＰ２０の起動後、初回の擬似乱数生成時にのみ、フリーランカウンタ２０ｃから得られるカウンタ値をｓｅｅｄとして擬似乱数を生成し、２回目以降の擬似乱数生成時には、前回生成した擬似乱数をｓｅｅｄとして擬似乱数を生成するようになされている。
【００４６】
（１−３）動作及び効果
以上の構成においてデータ処理回路１１では、ホストＣＰＵ５からのＤＳＰ起動命令に応じてＤＳＰ２０を起動させると共に、このときＤＳＰ２０の命令処理部２０ａによって、フリーランカウンタ２０ｃを起動させてカウントを開始させる。
【００４７】
その後、データ処理回路１１の命令処理部２０ａは、ホストＣＰＵ５から乱数要求命令を受け取ると、これを擬似乱数生成器２０ｂに転送する。擬似乱数生成器２０ｂは、命令処理部２０ａから乱数要求命令を受け取ると、シリアルバス２２を介して不揮発性メモリ２１のへの空読みを行い、この空読みが完了した時点で、起動中のフリーランカウンタ２０ｃからカウンタ値を取得する。
【００４８】
ここで取得するカウンタ値は、空読みした際のシリアルバス２２の処理時間のゆらぎによって不定となる。実際上、このシリアルバス２２の処理時間のゆらぎは、シリアルバス２２に接続された機器間（ここではＤＳＰ２０と不揮発性メモリ２１）での通信タイミングの調整、データ衝突防止のための調停、及びクロック信号のズレ等によって生じるものである。このような要因によってゆらぎが生じ、このゆらぎによってカウンタ値が不定となるのであり、このことを明確にするために、ここでは、ＤＳＰ２０起動直後に、フリーランカウンタ２０ｃでカウントを開始し、つづけて不揮発性メモリ２１への空読みを１回行い、この空読みが完了した時点でフリーランカウンタ２０ｃからカウンタ値を取得するといった一連の処理を１０回試行する実験を行った。
【００４９】
この実験の結果、図６に示すように、カウンタ値は、１回目が「７３４５９９」、２回目が「７３４５５７」、３回目が「７３４４１９」、４回目が「７３４５１７」、５回目が「７３４６７５」、６回目が「７３４５４２」、７回目が「７３４５３５」、８回目が「７３４５８６」、９回目が「７３４５００」、１０回目が「７３４４９３」というように毎回異なる不規則な値となった。
【００５０】
従って、この実験結果からも、シリアルバス２２の処理時間のゆらぎによって、フリーランカウンタ２０ｃのカウンタ値が不定となることが確認できた。
【００５１】
そして擬似乱数生成器２０ｂは、このように予測が困難で不定なカウンタ値をｓｅｅｄの初期値として、このｓｅｅｄから擬似乱数を生成する。
【００５２】
このように、データ処理回路１１では、シリアルバス２２の処理時間のゆらぎをカウンタ値に反映させることで、ＤＳＰ２０を起動する度に異なるカウンタ値を得ることができ、この不定なカウンタ値をｓｅｅｄの初期値とすることで、一段と乱数性の高い擬似乱数を生成することができる。
【００５３】
また、このデータ処理回路１１では、データ処理回路１１内部に設けられたシリアルバス２２の処理時間のゆらぎといった、データ処理回路１１の外部のハードウェア及びプログラムから制御することのできない不定な時間を利用するようにしたことにより、例えばコンテンツを不正に利用しようとして、ホストＣＰＵ５及びバス４を不正に制御して上述の擬似乱数生成処理手順におけるステップＳＰ１からステップＳＰ４の開始までの時間を一定にさせても、常に不定なｓｅｅｄを確実に得ることができるので、コンテンツの不正利用をより確実に防止することができる。
【００５４】
さらに、このデータ処理回路１１では、多くの一般的なデータ処理回路に実装されるバス（シリアルバス２２）の処理時間のゆらぎを利用してｓｅｅｄを得るようにしたことにより、回路に、このようなバス（シリアルバス２２）に加えて、ゆらぎをカウンタ値に反映し得るカウンタ（フリーランカウンタ２０ｃ）が実装されていればよく、ＲＴＣを実装することなく、一段と簡易な構成で、高品質な擬似乱数を生成する回路を実現することができる。
【００５５】
以上の構成によれば、シリアルバス２２を介して不揮発性メモリ２１への空読みを行ってからフリーランカウンタ２０ｃのカウンタ値を取得することにより、シリアルバス２２の処理時間のゆらぎをこのカウンタ値に反映させて不定なカウンタ値を得ることができ、そしてこの不定なカウンタ値をｓｅｅｄとして、このｓｅｅｄから擬似乱数を生成することにより、一段と乱数性の高い乱数を生成することができ、また多くの一般的なデータ処理回路に実装されるバス（この場合シリアルバス２２）と、バスの処理時間のゆらぎよりもカウント周期の短いカウンタとを実装するだけでよいため、別途ＲＴＣを実装する場合と比して、構成を簡略化することができ、かくして、簡易な構成でありながら、一段と乱数性の高い乱数を生成することができる。
【００５６】
（２）第２の実施の形態
次に、本発明の第２の実施の形態を詳述する。この第２の実施の形態においては、データ処理回路１１に実装されるＤＳＰ２０の構成が異なる点以外は、上述の第１の実施の形態と同様であるので、同様部分の説明は省略する。
【００５７】
（２−１）データ処理回路の内部構成
図２との同一部分に同一符号を付した図７に示すように、この第２の実施の形態のデータ処理回路１１には、ＤＳＰ２０内の擬似乱数生成器２０ｂとフリーランカウンタ２０ｃとの間に、新たにハッシュ値生成部４０を設けるようにした。このハッシュ値生成部４０は、フリーランカウンタ２０ｃで取得したカウンタ値を離散化するために、取得したカウンタ値に対してハッシュ関数（一方向性関数）を適用するようになされている。こうすることでハッシュ値生成部４０は、離散化したカウンタ値となるハッシュ値を生成し、このハッシュ値を擬似乱数生成器２０ｂに送信する。
【００５８】
そして擬似乱数生成器２０ｂは、ハッシュ値生成部４０から得られるハッシュ値をｓｅｅｄの初期値として、このｓｅｅｄから擬似乱数を生成する。
【００５９】
このようにこの第２の実施の形態では、ハッシュ値生成部４０により、カウンタ値を離散化したハッシュ値を生成し、このハッシュ値をｓｅｅｄの初期値とすることで、よりいっそう乱数性の高い擬似乱数を生成することができる。
【００６０】
なお、ここでは、カウンタ値を離散化させるために、ハッシュ関数を用いた場合について述べたが、本発明はこれに限らず、例えば、ＭＡＣ関数のような、種々の離散化関数を用いるようにしてもよい。
【００６１】
（３）他の実施の形態
なお上述の実施の形態においては、ＤＳＰ２０と不揮発性メモリ２１とをシリアルバス２２で接続し、このシリアルバス２２の処理時間のゆらぎを利用するようにした場合について述べたが、本発明はこれに限らず、例えばＤＳＰ２０と不揮発性メモリ２１とをパラレルバスで接続し、このパラレルバスの処理時間のゆらぎを利用するようにしてもよいし、この他種々のバスでＤＳＰ２０と不揮発性メモリ２１とを接続し、このバスの処理時間のゆらぎを利用するようにしてもよい。
【００６２】
また上述の実施の形態においては、シリアルバス２２を介して不揮発性メモリ２１へ空読みを１回行ってからカウンタ値を取得するようにした場合について述べたが、本発明はこれに限らず、例えば空読みを複数回行ってからカウンタ値を取得するようにしてもよいし、不揮発性メモリ２１への空読みに加えて、バス４を介してＲＯＭ６、ＨＤＤ７、あるいはハードディスクドライブ７に対してデータの送受信（すなわち空読み）を行ってからカウンタ値を取得するようにしてもよい。このようにすれば、擬似乱数生成器２０ｂが生成する擬似乱数の乱数性をより高めることができる。
【００６３】
さらに上述の実施の形態においては、擬似乱数生成処理手順の説明で、データ処理回路のＤＳＰ２０が、ホストＣＰＵ５からの乱数要求命令に応じて擬似乱数を生成し、生成した擬似乱数をホストＣＰＵ５に返信するようにした場合について述べたが、本発明はこれに限らず、例えば、ホストＣＰＵ５から、ＤＳＰ２０に対して、擬似乱数を用いた特定処理の実行命令を送信し、ＤＳＰ２０が、この実行命令に応じて擬似乱数を生成すると共に、この擬似乱数を用いた特定処理を実行し、この処理結果、あるいは処理完了通知をホストＣＰＵ５に返信するようにしてもよい。
【００６４】
さらに上述の実施の形態においては、データ処理回路１１のＤＳＰ２０内にソフトウェア的な機能として、命令処理部２０ａ、擬似乱数生成器２０ｂ、及びフリーランカウンタ２０ｃを設けるようにした場合について述べたが、本発明はこれに限らず、これら命令処理部２０ａ、擬似乱数生成器２０ｂ、及びフリーランカウンタ２０ｃの一部または全部を、データ処理回路１１にハードウェアとして実装するようにしてもよい。
【００６５】
さらに上述の実施の形態においては、命令処理部２０ａがホストＣＰＵ５から乱数要求命令を受け取ると、これを擬似乱数生成器２０ｂに転送し、擬似乱数生成器２０ｂがこの乱数要求命令に応じて、不揮発性メモリ２１への空読みを行い、この空読み完了後、フリーランカウンタ２０ｃからカウンタ値を取得して擬似乱数を生成するようにした場合について述べたが、本発明はこれに限らず、命令処理部２０ａがホストＣＰＵ５から乱数要求命令を受け取ると、この命令処理部２０ａが不揮発性メモリ２１への空読みを行い、この空読み完了後、乱数要求命令を擬似乱数生成器２０ｂに転送し、擬似乱数生成器２０ｂがこの乱数要求命令に応じて、フリーランカウンタ２０ｃからカウンタ値を取得して擬似乱数を生成するようにしてもよい。
【００６６】
さらに上述の実施の形態においては、信号処理部としてのＤＳＰ２０と、バスとしてのシリアルバス２２と、メモリとしての不揮発性メモリ２１とによって、信号処理装置としてのデータ処理回路及びコンテンツ再生装置１を構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を用いるようにしてもよい。
【００６７】
さらに上述の実施の形態においては、制御部としての命令処理部２０ａと、フリーランカウンタ２０ｃと、ホストＣＰＵ５から命令処理部２０ａを介して転送される乱数要求情報としての乱数要求命令に応じて、シリアルバス２２を介して不揮発性メモリ２１への空読みを行ってからフリーランカウンタ２０ｃのカウンタ値を取得し、取得したカウンタ値をｓｅｅｄとして乱数を生成する乱数生成部としての擬似乱数生成器２０ｂとによって、ＤＳＰ２０を構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を用いるようにしてもよい。
【産業上の利用可能性】
【００６８】
本発明は、擬似乱数を生成する様々な回路及び装置で広く利用できる。
【図面の簡単な説明】
【００６９】
【図１】コンテンツ再生装置の全体構成を示す略線図である。
【図２】第１の実施の形態によるデータ処理回路の内部構成を示す略線図である。
【図３】擬似乱数生成処理手順を示すシーケンスチャートである。
【図４】図３につづく擬似乱数生成処理手順を示すシーケンスチャートである。
【図５】図４につづく擬似乱数生成処理手順を示すシーケンスチャートである。
【図６】実験結果を示す表である。
【図７】第２の実施の形態によるデータ処理回路の内部構成を示す略線図である。
【符号の説明】
【００７０】
１……コンテンツ再生装置、２……操作入力部、３……入力処理部、４……バス、５……ホストＣＰＵ、６……ＲＯＭ、７……ハードディスクドライブ、８……ＲＡＭ、９……通信処理部、１０……ネットワークインタフェース、１１……データ処理回路、１２……音声処理部、２０……ＤＳＰ、２０ａ……命令処理部、２０ｂ…擬似乱数生成器、２０ｃ……フリーランカウンタ、３０……ｓｅｅｄ保持領域、４０……ハッシュ値生成部、ＮＴ……ネットワーク、ＳＰ……スピーカ。
【図１】
2006235995.tif 000003
【図２】
2006235995.tif 000004
【図３】
2006235995.tif 000005
【図４】
2006235995.tif 000006
【図５】
2006235995.tif 000007
【図６】
2006235995.tif 000008
【図７】
2006235995.tif 000009