(57)【要約】【課題】プログラムやコンテンツの保護が十分に図られるようにするためのプログラム認証装置等を提供することである。【解決手段】開発用マシン１は、ＤｉｒｅｃｔＳｈｏｗ（登録商標）のフィルタを表すフィルタモジュールまたはそのハッシュ値を秘密鍵で暗号化して署名データを作成する。コンテンツ再生用マシン２は、署名データを復号化してフィルタモジュール又はそのハッシュ値を復元し、一方で外部記憶部２５よりフィルタモジュールを読み出す。そして復元されたフィルタモジュール（又はそのハッシュ値）と外部記憶部２５から読み出したフィルタモジュール（又はそのハッシュ値）とが一致すればデジタル放送のデータストリームを取得してコンテンツをＤｉｒｅｃｔＳｈｏｗ（登録商標）で処理して再生する。一致しなければコンテンツの再生は阻止される。【選択図】　図１
2004054798.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、メモリとを備え、
前記メモリは、前記プロセッサが実行するためのプログラムを記憶しており、
前記プログラムは、前記プロセッサが前記プログラムを実行することにより実現する機能の一部をなす処理ブロックを表すモジュールを含み、
前記プロセッサは、
前記メモリが記憶する前記プログラムより前記モジュールを抽出し、抽出したモジュールをハッシュ関数に代入した結果を表す照合用ダイジェストを作成し、
外部より照合用署名データを取得して復号化し、復号化により得られたデータと前記照合用ダイジェストとが合致するか否かを判別して、合致しないと判別したとき、前記プロセッサ自身が前記処理ブロックを実現することを阻止する、
ことを特徴とするプログラム認証装置。
【請求項２】
プロセッサと、メモリとを備え、
前記メモリは、前記プロセッサが実行するためのプログラムを記憶しており、
前記プログラムは、前記プロセッサが前記プログラムを実行することにより実現する機能の一部をなす処理ブロックを表すモジュールを含み、
前記プロセッサは、
外部より照合用署名データを取得して復号化し、
前記メモリが記憶する前記プログラムより前記モジュールを抽出し、
復号化により得られたデータと前記抽出したモジュールとが合致するか否かを判別して、合致しないと判別したとき、前記プロセッサ自身が前記処理ブロックを実現することを阻止する、
ことを特徴とするプログラム認証装置。
【請求項３】
プロセッサと、メモリとを備え、
前記メモリはプログラムを記憶しており、
前記プログラムは、前記プロセッサが前記プログラムを実行することにより実現する機能の一部をなす処理ブロックを表すモジュールを含み、
前記プロセッサは、前記メモリが記憶する前記プログラムより前記モジュールを抽出し、抽出したモジュールを暗号化したものを表すデータ、又は、当該モジュールをハッシュ関数に代入した結果を暗号化したものを表すデータを作成し、出力する、
ことを特徴とするプログラム署名装置。
【請求項４】
プログラムより、所定の装置が当該プログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
抽出したモジュールをハッシュ関数に代入した結果を表す照合用ダイジェストを作成し、
外部より照合用署名データを取得して復号化し、復号化により得られたデータと前記照合用ダイジェストとが合致するか否かを判別して、合致しないと判別したとき、前記装置が前記プログラムを実行することを阻止する、
ことを特徴とするプログラム認証方法。
【請求項５】
外部より照合用署名データを取得して復号化し、
プログラムより、所定の装置が当該プログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
復号化により得られたデータと前記抽出したモジュールとが合致するか否かを判別して、合致しないと判別したとき、前記装置が前記プログラムを実行することを阻止する、
ことを特徴とするプログラム認証方法。
【請求項６】
プログラムより、所定の装置が当該プログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
抽出したモジュールを暗号化したものを表すデータ、又は、当該モジュールをハッシュ関数に代入した結果を暗号化したものを表すデータを作成し、出力する、
ことを特徴とするプログラム署名方法。
【請求項７】
コンピュータに、
認証対象のプログラムより、前記コンピュータ自身が当該認証対象のプログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出する機能と、
抽出したモジュールをハッシュ関数に代入した結果を表す照合用ダイジェストを作成する機能と、
外部より照合用署名データを取得して復号化し、復号化により得られたデータと前記照合用ダイジェストとが合致するか否かを判別して、合致しないと判別したとき、前記コンピュータ自身が前記認証対象のプログラムを実行することを阻止する機能と、
を行わせるためのプログラム。
【請求項８】
コンピュータに、
外部より照合用署名データを取得して復号化する機能と、
認証対象のプログラムより、前記コンピュータ自身が当該認証対象のプログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出する機能と、
復号化により得られたデータと前記抽出したモジュールとが合致するか否かを判別して、合致しないと判別したとき、前記コンピュータ自身が前記認証対象のプログラムを実行することを阻止する機能と、
を行わせるためのプログラム。
【請求項９】
コンピュータに、
認証対象のプログラムより、所定の装置が当該認証対象のプログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出する機能と、
抽出したモジュールを暗号化したものを表すデータ、又は、当該モジュールをハッシュ関数に代入した結果を暗号化したものを表すデータを作成し、出力する機能と、
を行わせるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラム認証装置、プログラム署名装置、プログラム認証方法、プログラム署名方法及びプログラムに関する。
【０００２】
【従来の技術】
画像や音声などのコンテンツを、コンテンツを表すデータを含むパケットが連続したものからなるデータストリームの形で放送するデジタル放送が利用されている。
【０００３】
デジタル放送されたコンテンツは、デジタル形式のデータとして記憶装置に蓄積することができ、蓄積の際にデータの劣化が非常に起こりにくい。
このため、デジタル放送されたコンテンツにかかる著作権などの権利の保護を図るための技術が用いられている。具体的には、コンテンツを表すデータを暗号化した上で蓄積する手法がある。
【０００４】
【発明が解決しようとする課題】
しかし、デジタル放送されたコンテンツのうちには、コンテンツを表すデータが、所定のプログラムを実行するコンピュータ等により所定の処理を経て再生されたときはじめてコンテンツの制作者の意図通りに再生される、という性質を持つものがある。
【０００５】
また、コンテンツを表すデータに所定の処理を施すプログラムを改竄することにより、このデータが、コンテンツの制作者の意図に反して不正に出力したり記録したりされる、という危険もある。
【０００６】
このため、コンテンツを表すデータの保護を図っても、このデータに所定の処理を施すためのプログラムを改竄などから保護しなければ、コンテンツの十分な保護は図れない。
【０００７】
この発明は、上記実状に鑑みてなされたものであり、プログラムやコンテンツの保護が十分に図られるようにするためのプログラム認証装置及びプログラム認証方法や、このようなプログラム認証装置及びプログラム認証方法の実現を容易にするためのプログラム署名装置及びプログラム署名方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成すべく、この発明の第１の観点にかかるプログラム認証装置は、
プロセッサと、メモリとを備え、
前記メモリは、前記プロセッサが実行するためのプログラムを記憶しており、
前記プログラムは、前記プロセッサが前記プログラムを実行することにより実現する機能の一部をなす処理ブロックを表すモジュールを含み、
前記プロセッサは、
前記メモリが記憶する前記プログラムより前記モジュールを抽出し、抽出したモジュールをハッシュ関数に代入した結果を表す照合用ダイジェストを作成し、
外部より照合用署名データを取得して復号化し、復号化により得られたデータと前記照合用ダイジェストとが合致するか否かを判別して、合致しないと判別したとき、前記プロセッサ自身が前記処理ブロックを実現することを阻止する、
ことを特徴とする。
【０００９】
また、この発明の第２の観点にかかるプログラム認証装置は、
プロセッサと、メモリとを備え、
前記メモリは、前記プロセッサが実行するためのプログラムを記憶しており、
前記プログラムは、前記プロセッサが前記プログラムを実行することにより実現する機能の一部をなす処理ブロックを表すモジュールを含み、
前記プロセッサは、
外部より照合用署名データを取得して復号化し、
前記メモリが記憶する前記プログラムより前記モジュールを抽出し、
復号化により得られたデータと前記抽出したモジュールとが合致するか否かを判別して、合致しないと判別したとき、前記プロセッサ自身が前記処理ブロックを実現することを阻止する、
ことを特徴とする。
【００１０】
また、この発明の第３の観点にかかるプログラム署名装置は、
プロセッサと、メモリとを備え、
前記メモリはプログラムを記憶しており、
前記プログラムは、前記プロセッサが前記プログラムを実行することにより実現する機能の一部をなす処理ブロックを表すモジュールを含み、
前記プロセッサは、前記メモリが記憶する前記プログラムより前記モジュールを抽出し、抽出したモジュールを暗号化したものを表すデータ、又は、当該モジュールをハッシュ関数に代入した結果を暗号化したものを表すデータを作成し、出力する、
ことを特徴とする。
【００１１】
また、この発明の第４の観点にかかるプログラム認証方法は、
プログラムより、所定の装置が当該プログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
抽出したモジュールをハッシュ関数に代入した結果を表す照合用ダイジェストを作成し、
外部より照合用署名データを取得して復号化し、復号化により得られたデータと前記照合用ダイジェストとが合致するか否かを判別して、合致しないと判別したとき、前記装置が前記プログラムを実行することを阻止する、
ことを特徴とする。
【００１２】
また、この発明の第５の観点にかかるプログラム認証方法は、
外部より照合用署名データを取得して復号化し、
プログラムより、所定の装置が当該プログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
復号化により得られたデータと前記抽出したモジュールとが合致するか否かを判別して、合致しないと判別したとき、前記装置が前記プログラムを実行することを阻止する、
ことを特徴とする。
【００１３】
また、この発明の第６の観点にかかるプログラム署名方法は、
プログラムより、所定の装置が当該プログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
抽出したモジュールを暗号化したものを表すデータ、又は、当該モジュールをハッシュ関数に代入した結果を暗号化したものを表すデータを作成し、出力する、
ことを特徴とする。
【００１４】
また、この発明の第７の観点にかかるプログラムは、
コンピュータに、
認証対象のプログラムより、前記コンピュータ自身が当該認証対象のプログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出する機能と、
抽出したモジュールをハッシュ関数に代入した結果を表す照合用ダイジェストを作成する機能と、
外部より照合用署名データを取得して復号化し、復号化により得られたデータと前記照合用ダイジェストとが合致するか否かを判別して、合致しないと判別したとき、前記コンピュータ自身が前記認証対象のプログラムを実行することを阻止する機能と、
を行わせるためのものであることを特徴とする。
【００１５】
また、この発明の第８の観点にかかるプログラムは、
コンピュータに、
外部より照合用署名データを取得して復号化する機能と、
認証対象のプログラムより、前記コンピュータ自身が当該認証対象のプログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出し、
復号化により得られたデータと前記抽出したモジュールとが合致するか否かを判別して、合致しないと判別したとき、前記コンピュータ自身が前記認証対象のプログラムを実行することを阻止する機能と、
を行わせるためのものであることを特徴とする。
【００１６】
また、この発明の第９の観点にかかるプログラムは、
コンピュータに、
認証対象のプログラムより、所定の装置が当該認証対象のプログラムを実行することにより実現される機能の一部をなす処理ブロックを表すモジュールを抽出する機能と、
抽出したモジュールを暗号化したものを表すデータ、又は、当該モジュールをハッシュ関数に代入した結果を暗号化したものを表すデータを作成し、出力する機能と、
を行わせるためのものであることを特徴とする。
【００１７】
【発明の実施の形態】
以下、この発明の実施の形態を、図面を参照して説明する。
図１は、この発明の実施の形態に係るデジタル放送受信システムの構成を示す図である。図示するように、このデジタル放送受信システムは、開発用マシン１と、コンテンツ再生用マシン２とＰＣ−ＤＴＶ（Ｐｅｒｓｏｎａｌ　Ｃｏｍｐｕｔｅｒ−Ｄｉｇｉｔａｌ　ＴｅｌｅＶｉｓｉｏｎ）ボード３とより構成されている。このうちＰＣ−ＤＴＶボード３は、コンテンツ再生用マシン２に接続できるよう構成されている。
【００１８】
開発用マシン１は、たとえば図１に示すように、プロセッサ１１と、主記憶部１２と、入力部１３と、出力部１４と、外部記憶部１５、記録媒体アクセス部１６とを備える。主記憶部１２、入力部１３、出力部１４、外部記憶部１５及び記録媒体アクセス部１６は、プロセッサ１１に接続されている。
【００１９】
プロセッサ１１は、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）等からなる。プロセッサ１１は、コンテンツ再生用マシン２の起動後、外部記憶部１５に記憶されている後述のオペレーティングシステム（ＯＳ）を読み出して実行し、このＯＳの制御に従って、後述の署名プログラムを外部記憶部１５より読み出す。そして、この署名プログラムに従って、後述する処理を行う。
【００２０】
主記憶部１２は、ＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）等からなる。主記憶部１２は、プロセッサ１１のワークエリアとなる記憶領域を有する。
【００２１】
入力部１３は、たとえばキーボードやポインティングデバイス（例えば、マウス）等からなっており、操作者の操作に従ったデータをプロセッサ１１に供給する。
【００２２】
出力部１４は、画像の表示を制御するビデオ回路や、この制御に従って画像を表示する液晶パネル等の表示装置や、音声を再生するための増幅回路及びスピーカ等より構成されている。出力部１４は、プロセッサ１１が供給する指示に従った画像や音声を出力する。
【００２３】
外部記憶部１５は、ハードディスク装置等からなる。外部記憶部１５は、上述したＯＳや署名プログラムと、後述する署名処理において暗号化のために用いる秘密鍵及び曲線パラメータ等のデータとを記憶している。外部記憶部１５は、プロセッサ１１からのアクセスに従い、プロセッサが供給するデータを記憶したり、自己が記憶しているデータを読み出してプロセッサに供給したりする。
【００２４】
外部記憶部１５が記憶する秘密鍵は、ＥＣ（Ｅｌｌｉｐｔｉｃ　Ｃｕｒｖｅ）−ＤＳＡ（Ｄｉｇｉｔａｌ　Ｓｉｇｎａｔｕｒｅ　Ａｌｇｏｒｉｔｈｍ）の手法を用いてデータを暗号化するための暗号鍵であり、暗号化する対象のデータをこの暗号鍵を用いてＥＣ−ＤＳＡの手法により暗号化することにより得られるデータは、実質上、後述する公開鍵を用いて復号化しなければ平文のデータへと復元することができない。
また、外部記憶部１５が記憶する曲線パラメータは、ＥＣ−ＤＳＡの手法による暗号化のために用いる楕円曲線を特定するパラメータからなっている。
【００２５】
なお、ＯＳは、例えばマイクロソフト社のウィンドウズ（登録商標）からなっている。ＯＳは、機能上、プロセッサ１１が実行する処理を制御する処理ブロックを複数含む。これらの処理ブロックのうちには、コンテンツ再生用マシン２が再生するコンテンツ（具体的には、画像や音声など）に視聴覚上の効果を与えるため、このコンテンツを表すコンテンツデータに加工を施す処理を制御するコンテンツ加工用の処理ブロックが含まれる。なお、コンテンツ加工用の処理ブロックは、開発者等が任意に作成してＯＳに追加するようにしても差し支えない。
【００２６】
ＯＳが上述のウィンドウズ（登録商標）からなる場合、コンテンツ加工用の処理ブロックは、例えば、ウィンドウズ（登録商標）が提供する機能であるＤｉｒｅｃｔＸ（登録商標）の一部であるＤｉｒｅｃｔＳｈｏｗ（登録商標）を実現するためにある、「フィルタ」と呼ばれるアプリケーションインターフェース（ＡＰＩ）からなっている。ウィンドウズ（登録商標）の処理を制御するプログラムのうちフィルタを制御する部分（フィルタモジュール）は、フィルタ毎に別個のファイルとして、外部記憶部１５や、コンテンツ再生用マシン２の後述する外部記憶部２５に格納されている。
【００２７】
なお、それぞれのコンテンツ加工用の処理ブロックには、各自に固有の識別情報が割り当てられており、この識別情報は、一定の規則に従ってソートすることが可能である。ＯＳがウィンドウズ（登録商標）からなる場合、この識別情報は、例えばＧＵＩＤ（Ｇｌｏｂａｌｌｙ　Ｕｎｉｑｕｅ　ＩＤｅｎｔｉｆｉｅｒ）と呼ばれる数値からなっている。ＧＵＩＤは数値からなるので、例えば昇順あるいは降順にソート可能である。
【００２８】
また、ＯＳがウィンドウズ（登録商標）からなる場合、ＯＳを実行するコンテンツ再生用マシン２や開発用マシン１は、フィルタのＧＵＩＤと、フィルタの処理を制御するフィルタモジュールのパス名（このフィルタモジュールが格納されている記憶領域の論理的位置）とを互いに対応付けて格納するテーブルであるレジストリを、自己の外部記憶部の記憶領域内に確保する。また、ウィンドウズ（登録商標）は、フィルタモジュールのパス名を特定する機能を有するＡＰＩを提供している。このため、コンテンツ再生用マシン２や開発用マシン１は、まずＡＰＩの制御に従ってフィルタモジュールのパス名を特定し、特定したパス名を検索キーとしてレジストリを検索することにより、フィルタのＧＵＩＤを取得することができる。
【００２９】
コンテンツ加工用の処理ブロックは、自己に後続する処理を制御する処理ブロックを指定する接続先情報を含んでいる。このため、ＯＳの制御下にあるアプリケーション等がＯＳから呼び出す処理を制御する処理ブロックが特定できれば、このアプリケーションがコンテンツ加工用の処理ブロックの集合によって実現する視聴覚上の効果の内容や、この効果を実現するために行うべき処理の内容も特定できる。
そして、このアプリケーションを実行するプロセッサは、アプリケーションが呼び出した処理を表す処理ブロックを動的にロードする。すなわち、このような処理ブロックを生成するために必要なデータを特定してＯＳより抽出し、抽出したデータを用いてこの処理ブロックを生成し、実行する。
【００３０】
記録媒体アクセス部１６は、ＣＤ（Ｃｏｍｐａｃｔ　Ｄｉｓｃ）−ＲＷ（ＲｅＷｒｉｔａｂｌｅ）ドライブや、ＭＯ（Ｍａｇｎｅｔｏ　Ｏｐｔｉｃａｌ　ｄｉｓｋ）ドライブあるいはその他記録媒体にアクセスするドライブ装置からなる。記録媒体アクセス部１６は、自己に装着された記録媒体（例えば、ＣＤ−ＲＷや、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）や、ＭＯなど）に、プロセッサ１１からの指示に従ってアクセスし、プロセッサが供給するデータをこの記録媒体が有する記憶領域に書き込んだり、この記憶領域からデータを読み出してプロセッサ１１に供給したりする。
【００３１】
コンテンツ再生用マシン２は、例えば、開発用マシン１と実質的に同一の構成を有している。すなわち、コンテンツ再生用マシン２は、例えば図１に示すように、プロセッサ２１と、主記憶部２２と、入力部２３と、出力部２４と、外部記憶部２５と、記録媒体アクセス部２６とを備える。プロセッサ２１、主記憶部２２、入力部２３、出力部２４、外部記憶部２５及び記録媒体アクセス部２６は、開発用マシン１のプロセッサ１１、主記憶部１２、入力部１３、出力部１４及び外部記憶部１５及び記録媒体アクセス部１６と実質的に同一のものである。主記憶部２２、入力部２３、出力部２４、外部記憶部２５及び記録媒体アクセス部２６はプロセッサ２１に接続されている。
【００３２】
また、図１に示すように、コンテンツ再生用マシン２は、バスコントローラ２７を更に備える。バスコントローラ２７はプロセッサ２１に接続され、また、例えばＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｆａｃｅ）バスからなる接続バスＢに接続される。
バスコントローラ２７は、論理回路等からなり、プロセッサ２１とコンテンツ再生用マシン２の外部の装置との間での接続バスＢを介したデータ交換を制御する。
【００３３】
コンテンツ再生用マシン２の外部記憶部２５は、開発用マシン１の外部記憶部１５が記憶するものと実質的に同一のＯＳを記憶している。そして、プロセッサ２１は、外部記憶部２５に記憶されているこのＯＳを読み出して実行し、このＯＳの制御に従って、後述する実行ファイルを外部記憶部２５等より読み出し、後述する認証処理等を行う。
【００３４】
また、外部記憶部２５は、上述した公開鍵及び曲線パラメータを更に記憶している。外部記憶部２５が記憶する曲線パラメータは、開発用マシン１が記憶している曲線パラメータが示すものと同一の楕円曲線を示すものである。
開発用マシン１が記憶する上述の秘密鍵を用いてＥＣ−ＤＳＡの手法により暗号化されたデータは、この公開鍵を用いてＥＣ−ＤＳＡの手法（ただし、外部記憶部２５が記憶する曲線パラメータが示す楕円曲線を用いるものとする）により復号されることで、平文のデータへと復元される。
【００３５】
ＰＣ−ＤＴＶボード３は、図１に示すように、デジタル放送受信部３１と、バスコントローラ３２とを備える。
【００３６】
デジタル放送受信部３１は、復調回路より構成されており、内部バスを介してバスコントローラ３２に接続されている。デジタル放送受信部３１は、外部よりデジタル放送された、データストリームを表す変調波を入力して復調することにより、データストリームを復元する。そして、復元されたデータストリームをバスコントローラ３２に供給する。
【００３７】
なお、デジタル放送受信部３１が受信する変調波が表すデータストリームは、上述したコンテンツ加工用の処理ブロックにより再生されるべきコンテンツを表しており、連続した複数のＴＳ（Ｔｒａｎｓｐｏｒｔ　Ｓｔｒｅａｍ）パケットより構成されている。
【００３８】
バスコントローラ３２は、論理回路等より構成されており、接続バスＢを介して再生用マシン２に接続される。バスコントローラ３２は、コンテンツ再生用マシン２及びデジタル放送受信部３１の相互間のアクセスを媒介する。
【００３９】
（動作）
次に、このデジタル放送受信システムの動作を、コンテンツ再生用マシン２及び開発用マシン１が実行するＯＳがいずれもウィンドウズ（登録商標）である場合を例として説明する。
図２は、後述する署名データを作成する処理（以下、署名処理と呼ぶ）を示すフローチャートである。
図３は、署名データを検証する処理（以下、認証処理と呼ぶ）を示すフローチャートである。
【００４０】
（署名処理）
アプリケーションの開発者等は、コンテンツ再生用マシン２が実行するフィルタを認証の対象としたい場合、開発用マシン１の入力部１３を操作して、署名プログラムの起動を指示する。開発用マシン１のプロセッサ１１はこの指示に応答して、署名プログラムを外部記憶部１５より読み出し、実行する。
【００４１】
プロセッサ１１は、署名プログラムの処理を開始すると、まず、フィルタモジュールのパス名を特定するＡＰＩの制御に従って、開発用マシン１が実行可能な各フィルタの処理を制御するフィルタモジュールのパス名を特定する（図２、ステップＳ１０１）。
【００４２】
次に、プロセッサ１１は、ステップＳ１０１で特定したパス名を検索キーとしてレジストリを検索することにより、各フィルタのＧＵＩＤを取得する（ステップＳ１０２）。
【００４３】
次にプロセッサ１１は、外部記憶部１５にアクセスして、ステップＳ１０１で特定したパス名を有する各フィルタモジュールを読み出す（ステップＳ１０３）。
次に、プロセッサ１１は、曲線パラメータ及び秘密鍵を外部記憶部１５より読み出し、ステップＳ１０３で読み出した各フィルタモジュールをそれぞれＥＣ−ＤＳＡの手法によって暗号化することにより、署名データを作成する（ステップＳ１０４）。
そして、プロセッサ１１は、ステップＳ１０５で作成した各々の署名データに、この署名データが表すフィルタのＧＵＩＤを結合させ、外部記憶部１５に記憶させる（ステップＳ１０５）。
【００４４】
以上説明したステップＳ１０１〜Ｓ１０５の処理の結果、署名データが開発用マシン１によって作成され、外部記憶部１５に記憶される。それぞれの署名データは、当該署名データに付されたＧＵＩＤが示すフィルタモジュールに固有の値を暗号化したものにあたる。
【００４５】
署名データが作成された後、アプリケーションの開発者等は、頒布しようとするアプリケーションに、後述する認証処理を制御するプログラムと、署名データとを組み込む。
具体的には、例えば、開発用マシン１にコンパイラ及びリンカをインストールしておき、まず入力部１３を操作して開発用マシン１にコンパイラを実行させることにより、認証処理を制御するプログラムを表すオブジェクトファイルと、このアプリケーションの本来の各処理を表すオブジェクトファイルとを作成させる。そして更にリンカを実行させることにより、コンテンツ再生用マシン２に認証処理を実行させてからこのアプリケーションの本来の処理を行わせるような実行ファイルを作成させる。
そして、アプリケーションの開発者等は、記録媒体アクセス部１６に記録媒体をセットして入力部１３を操作し、開発用マシン１に、この記録媒体へと実行ファイル及び署名データを書き込ませる。そして、この記録媒体あるいはその複製品を頒布する。
【００４６】
（認証処理）
コンテンツ再生用マシン２のユーザ等は、コンテンツ再生用マシン２にコンテンツを再生させたい場合、例えば、上述の実行ファイル及び署名データが書き込まれた記録媒体を記録媒体アクセス部２６にセットして、入力部２３を操作し、実行ファイル及び署名データをコンテンツ再生用マシン２にインストールする（外部記憶部２５に実行ファイル及び署名データを記憶させる）。
【００４７】
そしてユーザ等は、入力部２３を操作し、インストールされた実行ファイルの起動を指示する。プロセッサ２１はこの指示に応答して、この実行ファイルを外部記憶部２５より読み出し、起動する。すると、プロセッサ２１は、この実行ファイルに従い、まず認証処理を開始する。
【００４８】
プロセッサ２１は、認証処理を開始すると、記録媒体アクセス部２６あるいは外部記憶部２５に格納されている各署名データを読み出し、また、外部記憶部１５から曲線パラメータ及び公開鍵を読み出す（図３、ステップＳ２０１）。そして、ステップＳ２０１で読み出した各署名データをそれぞれＥＣ−ＤＳＡの手法によって復号化することにより、各フィルタモジュールを復元する（ステップＳ２０２）。
【００４９】
次に、プロセッサ２１は、復元されたそれぞれのフィルタモジュールについて、このフィルタモジュールの復元に用いた署名データに付されていたＧＵＩＤを検索キーとしてレジストリを検索することにより、このフィルタモジュールのパス名を特定する。そして、特定されたパス名を付されたフィルタモジュールを外部記憶部２５から読み出す（ステップＳ２０３）。
【００５０】
次に、プロセッサ２１は、ステップＳ２０２で復号化した各フィルタモジュールの内容と、ステップＳ２０３で読み出した各フィルタモジュールの内容とが、同一のフィルタを表すべきもの同士（同一のＧＵＩＤが対応付けられているもの同士）で互いに同一であるか否かを判別する（ステップＳ２０４）。
【００５１】
そして、ステップＳ２０２で復号化した各フィルタモジュールとステップＳ２０３で読み出した各フィルタモジュールとが、いずれのＧＵＩＤが対応付けられているもの同士についても互いに同一であると判別すると（つまり認証に成功すると）、プロセッサ２１は、ＰＣ−ＤＴＶボード３のデジタル放送受信部３１から供給されるデータストリームを、バスコントローラ３２及びコンテンツ再生用マシン２のバスコントローラ２７を介して取得する（ステップＳ２０５）。
【００５２】
そして、プロセッサ２１は、アプリケーションの制御に従ってフィルタを呼び出すと（具体的には、例えば当該フィルタを表すフィルタモジュールを外部記憶部２５から読み出して起動すると）、認証処理を終える。そして、ＰＣ−ＤＴＶボード３より取得したデータストリームを構成するＴＳパケットに含まれるコンテンツデータを、このフィルタの制御に従って加工し、加工されたコンテンツデータが表す音声や画像を出力するよう、出力部２４に指示を供給する。出力部２４は、プロセッサ２１が供給する指示に従った画像や音声を出力する（ステップＳ２０６）。
すなわち、認証に成功したとき、コンテンツ再生用マシン２は、デジタル放送受信部３１が出力するデータストリームが表すコンテンツを再生する。
【００５３】
一方、プロセッサ２１は、ステップＳ２０３で読み出した各フィルタモジュールのうちに、同一のＧＵＩＤが対応付けられているにもかかわらずステップＳ２０２で復号化した各フィルタモジュールと一致しないものがあると判別すると（つまり認証に失敗すると）、該当するフィルタモジュールが表すフィルタの処理の実行を中止する（ステップＳ２０７）。（なお、プロセッサ２１は、その他のフィルタの処理も中止して差し支えない。）
従って、認証に失敗したとき、コンテンツ再生用マシン２は、デジタル放送受信部３１が出力するデータストリームが表すコンテンツを再生しない。
【００５４】
以上説明したステップＳ２０１〜Ｓ２０７の処理の結果、コンテンツ再生用マシン２と開発用マシン１とが互いに実質的に同一のフィルタモジュールを記憶していることが確認された場合はコンテンツが再生され、その他の場合はコンテンツの再生が阻止される。従って、フィルタモジュールの改竄が防止され、フィルタモジュールやコンテンツデータの保護が十分に図られる。
【００５５】
なお、このデジタル放送受信システムの構成は上述のものに限られない。
たとえば、開発用マシン１がコンテンツ再生用マシン２の機能を兼ねていてもよく、一方、開発用マシン１は、必ずしもコンテンツ加工用の処理ブロックを実行可能である必要はない。
【００５６】
また、接続バスＢは必ずしもＰＣＩバスに限られず任意の規格に準拠したバスであってよい。従って、接続バスＢは、たとえばＰＣ　Ｃａｒｄ　Ｓｔａｎｄａｒｄに準拠するバスからなっていてもよいし、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）からなっていてもよい。ただし、ＰＣ−ＤＴＶボード３は、接続バスＢがＰＣＩバスでない場合、バスコントローラ３２に代えて、接続バスＢが準拠する規格に適合したデータ交換を媒介するバスコントローラ等を備えるものとする。
【００５７】
また、ステップＳ１０４での暗号化及びステップＳ２０２での復号化は、必ずしもＥＣ−ＤＳＡの手法により行われる必要はなく、例えば、ＤＳＡ、ＲＳＡ（登録商標）あるいはその他の公開鍵暗号の手法によってもよい。
そして開発用マシン１は、ステップＳ１０４で行う暗号化のために必要となる秘密鍵を記憶していればよい。一方、コンテンツ再生用マシン２は、開発用マシン１がステップＳ１０４で行った暗号化の手法と同一の手法で復号化を行えばよく、この復号化のために必要となる公開鍵を記憶していればよい。
【００５８】
また、図４に示すように、ステップＳ１０４で開発用マシン１は、フィルタモジュール自体を暗号化する代わりに、フィルタモジュールをハッシュ関数に代入して得られる値（ハッシュ値）を生成し、このハッシュ値を暗号化するようにしてもよい。なお、ハッシュ関数は、例えば、ＳＨＡ−１（Ｓｅｃｕｒｅ　Ｈａｓｈ　Ａｌｇｏｒｉｔｈｍ　１）、ＳＨＡ−２５６、ＳＨＡ−５１２あるいはＭＤ−５（Ｍｅｓｓａｇｅ　Ｄｉｇｅｓｔ　５）などであればよい。
【００５９】
署名データがフィルタモジュールのハッシュ値を暗号化したものからなる場合、図５に示すように、コンテンツ再生用マシン２のプロセッサ２１は、ステップＳ２０２で、ステップＳ２０１で得られた各署名データを復号化することにより、各フィルタモジュールのハッシュ値を復元する。
【００６０】
次に、プロセッサ２１は、ステップＳ２０４に処理を移す前に、ステップＳ２０３でフィルタモジュールを外部記憶部２５から読み出した後、読み出した各々のフィルタモジュールのハッシュ値を求める（ステップＳ２０３Ｂ）。
【００６１】
そして、処理がステップＳ２０３ＢからステップＳ２０４に移ると、プロセッサ２１は、ステップＳ２０２で復号化した各フィルタモジュールのハッシュ値とステップＳ２０３Ｂで生成した各ハッシュ値とが、同一のフィルタモジュールを表すべきもの同士で互いに同一であるか否かを判別する。そして、復号化された各ハッシュ値とステップＳ２０３Ｂで生成した各ハッシュ値とが、同一のフィルタモジュールを表すべきもの同士の組み合わせすべてについて互いに一致すると判別した場合は認証に成功したものとして処理を進め、その他の場合は認証に失敗したものとして処理を進める。
【００６２】
以上、この発明の実施の形態を説明したが、この発明にかかるデータストリーム装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。
例えば、パーソナルコンピュータに上述の開発用マシン１又はコンテンツ再生用マシン２の動作を実行させるためのプログラムを格納した媒体（ＣＤ−ＲＯＭ、ＭＯ、フロッピー（登録商標）ディスク等）から該プログラムをインストールし、ＰＣ−ＤＴＶボード３を装着するための拡張スロット等を備えるパーソナルコンピュータに上述のコンテンツ再生用マシン２の動作を実行させるためのプログラムを格納した媒体から該プログラムをインストールすることにより、上述の処理を実行するデジタル放送受信システムを構成することができる。
【００６３】
また、例えば、通信回線の掲示板（ＢＢＳ）にこれらのプログラムをアップロードし、これを通信回線を介して配信してもよく、また、これらのプログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調して該プログラムを復元するようにしてもよい。
そして、これらのプログラムを起動し、ＯＳの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【００６４】
なお、ＯＳが処理の一部を分担する場合、あるいは、ＯＳが本願発明の１つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【００６５】
【発明の効果】
以上説明したように、この発明によれば、プログラムやコンテンツの保護が十分に図られるようにするためのプログラム認証装置及びプログラム認証方法や、このようなプログラム認証装置及びプログラム認証方法の実現を容易にするためのプログラム署名装置及びプログラム署名方法が実現される。
【図面の簡単な説明】
【図１】この発明の実施の形態に係るデジタル放送受信システムの構成を示すブロック図である。
【図２】署名処理を示すフローチャートである。
【図３】認証処理を示すフローチャートである。
【図４】署名処理の変形例を示すフローチャートである。
【図５】認証処理の変形例を示すフローチャートである。
【符号の説明】
１　　　開発用マシン
２　　　コンテンツ再生用マシン
１１、２１　　　プロセッサ
１２、２２　　　主記憶部
１３、２３　　　入力部
１４、２４　　　出力部
１５、２５　　　外部記憶部
１６、２６　　　記録媒体アクセス部
２７　　　バスコントローラ
３　　　ＰＣ−ＤＴＶボード
３１　　　デジタル放送受信部
３２　　　バスコントローラ
Ｂ　　　接続バス
【図１】
2004054798.tif 000003
【図２】
2004054798.tif 000004
【図３】
2004054798.tif 000005
【図４】
2004054798.tif 000006
【図５】
2004054798.tif 000007