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