(57)【要約】デジタル信号処理機能のソフトウェア実装が、信号処理機能のパラメータの部分集合を選択し（２１０）、選択されたパラメータに透かしを埋め込む（２３０）ことによって保護される。
2008520009.tif 000002
【特許請求の範囲】
【請求項１】
デジタル信号処理機能のソフトウェア実装を保護する方法であって：
・該信号処理機能によって使われる、および／または該信号処理機能を設計するために使われる諸パラメータの部分集合を選択する段階と；
・前記選択されたパラメータに透かしを埋め込む段階、
とを含む方法。
【請求項２】
前記選択されたパラメータは信号処理機能によって使用されるパラメータであり、パラメータの部分集合を選択する前記段階は、前記信号処理機能の品質に実質的に影響することなく乱すことができるパラメータを選択することを含み；
・当該方法がさらに、前記信号処理機能の品質に実質的に影響することなく乱すことができる前記選択されたパラメータのいくつかの下位ビットを選択する段階と；
・前記選択されたパラメータの前記選択された下位ビットに透かしを埋め込む段階、
とを含む、請求項１記載の方法。
【請求項３】
透かしが埋め込まれた選択されたパラメータに依存して信号処理機能を設計することを含む、請求項１記載の方法。
【請求項４】
前記選択されたパラメータに基づいて透かしを決定することを含む、請求項１記載の方法。
【請求項５】
前記選択されたパラメータのそれぞれの少なくとも一つのビットを含むビットのブロックを形成する段階と；ある所定の鍵の制御のもとに前記形成されたブロックのデジタル署名を計算することによって透かしを生成する段階とを含む、請求項４記載の方法。
【請求項６】
前記ブロックが前記選択されたパラメータの実質的にすべてのビットを含む、請求項５記載の方法。
【請求項７】
透かしを埋め込む段階が、前記選択されたパラメータの前記選択された下位ビットを前記生成された署名のそれぞれのビットで置き換えることを含む、請求項２記載の方法。
【請求項８】
前記選択されたパラメータの非選択ビットが修正されない形で維持される、請求項２記載の方法。
【請求項９】
前記選択されたパラメータが：
・デジタル信号フィルタの係数；
・閾値；
・コスト関数におけるコスト；
・関数近似の係数；
・デジタルグラフィックの近似の制御点
のうちの一つを表している、請求項１記載の方法。
【請求項１０】
関数が区間の部分区間ごとに近似され、関数近似の係数が逐次の部分区間の境界点を表す、請求項８記載の方法。
【請求項１１】
プログラムを記憶するメモリを含むプロセッサであって、該プログラムは当該プロセッサをしてデジタル信号処理機能を実行せしめるものであり、前記信号処理機能の少なくとも一つのパラメータが透かしを埋め込んでいるプロセッサ。
【請求項１２】
プロセッサをしてデジタル信号処理機能を実行せしめるコンピュータプログラムであって、前記信号処理機能の少なくとも一つのパラメータが透かしを埋め込んでいるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号処理機能のソフトウェア実装を保護する方法に関する。本発明はさらに、プロセッサをしてデジタル信号処理機能を実行せしめるコンピュータプログラムプロダクトおよびそのようなソフトウェアを実行するためのプロセッサに関する。
【背景技術】
【０００２】
テレビ、セットトップボックス、記録装置、MP3プレーヤーなどのような消費者電子装置ならびにコンピュータ装置といった装置の多くの機能は、特定の信号処理機能を実行するプログラムを搭載したプロセッサによって実行される。プロセッサは典型的にはデジタル信号プロセッサ（DSP）であるが、ARMプロセッサのようなマイクロコントローラあるいはパソコンで使われるような汎用プロセッサであってもよい。信号処理機能はフィルタ処理、エンコード／デコード、圧縮／圧縮解除などを含む。これらの機能の決定および実装は著しい努力と高度に熟練した人材を要する。したがって、そのような努力を保護することが望まれる。これらの機能のソフトウェア実装の著作権保護は限られた効果しかない。実際上のシステムではしばしば、信号処理機能のライブラリの一部のみが使用され、アプリケーション固有ソフトウェアと組み合わされる。これは、機能の中核となる側面がコピーされたものであることを確立するのを困難にしている。
【０００３】
ソフトウェアモジュール全体にたとえばデジタル署名を使って透かしを付けることが知られている。しかし、そのような技法は、モジュールからフィルタのような特定の機能を人が「コピーする」ことに対する保護は与えてくれない。そのようなコピーは、ソースコードが特定のライセンス条件のもとで利用可能にされているかリバースエンジニアリングを通じて得られているときに可能となりうる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
信号処理機能のソフトウェア実装において具現されているノウハウを保護する方法を提供することが本発明の一つの目的である。信号処理機能を具現する保護されたソフトウェアおよびそのようなソフトウェアをもつプロセッサを提供することが本発明のさらなる目的である。
【課題を解決するための手段】
【０００５】
本発明のある目的を満たすため、デジタル信号処理機能のソフトウェア実装を保護する方法は：該信号処理機能によって使われる、および／または該信号処理機能を設計するために使われるパラメータの部分集合を選択する段階と；前記選択されたパラメータに透かしを埋め込む段階とを含む。
【０００６】
本発明人は、信号処理機能のパラメータに透かしを入れることができるという洞察を得た。典型的には、信号処理機能のパラメータは、アルゴリズムの十分な性能のために最低限必要とされるよりも多くのビットをもつメモリ位置を使って保存される。これはそのようなパラメータを透かしによって乱す余地を与える。透かしを入れたパラメータは、信号処理機能によって実際に使用されるパラメータであってもよい。透かしを入れたパラメータはまた、信号処理機能の設計パラメータ、すなわち該機能の設計に影響するパラメータであってもよい。この場合、設計パラメータは好ましくは、実際の信号処理機能にも存在する（侵害検出が簡単になる）。あるいはまた、設計パラメータは実際の信号処理機能に存在する一つまたは複数の他のパラメータに影響している。
【０００７】
パラメータへの透かし入れは、たとえソフトウェアモジュール全体が乗っ取られなくても、コピーの検出を可能にする。パラメータへの透かし入れはまた、実際のコードの一部がプログラミングし直されているがパラメータはコピーされたものである場合にも検出を可能にする。好ましくは、独特なノウハウを表すパラメータ（すなわち、まだ一般には知られていないもの）が選択される。
【０００８】
従属請求項２の施策によれば、選択されたパラメータは信号処理機能によって使用されるパラメータであり、パラメータの部分集合を選択する段階は、信号処理機能の品質に実質的に影響することなく乱すことができるパラメータを選択することを含む。本方法はさらに、信号処理機能の品質に実質的に影響することなく乱すことができる前記選択されたパラメータのいくつかの下位ビットを選択し、前記選択されたパラメータの前記選択された下位ビットに透かしを埋め込むことを含む。
【０００９】
典型的には、信号処理機能のパラメータは、アルゴリズムの十分な性能のために最低限必要とされるよりも多くのビットをもつメモリ位置を使って保存される。しばしば、それらのパラメータのいくつかの量子化ビット（すなわち前記いくつかの下位ビット）は、信号処理機能の知覚される挙動に影響することなく変えることができる。そこで、そのようなパラメータの一つまたは複数が選択され、変えることのできるビット位置の一部（または全部）に透かしが埋め込まれる。これは、第三者によるそれらのパラメータの再使用の検出を可能にする。透かしは固定でもよく、前記選択されたパラメータの前記選択された下位ビットといかなる好適な方法で組み合わされてもよい（たとえばビットごとのXOR演算を通じて）。このようにして透かしを埋め込むことは、信号処理機能の品質に影響することなくパラメータを保護する単純な方法である。埋め込みは、信号処理機能のプログラミングコードに基づいて、すなわち当該機能が完全に設計され終わったあとで行われてもよい。
【００１０】
従属請求項３の施策によれば、本方法は、透かしが埋め込まれた選択されたパラメータに依存して信号処理機能を設計することを含む。この実施形態では、まず透かしが埋め込まれ、それから透かしが埋め込まれたパラメータについて機能が設計される（たとえば最適化される）。このようにして、新たに設計される機能は透かしによって生じた乱れを補償できる。これは、透かしの効果が再設計によって（部分的に）補償されるので、当該機能のより高い品質を維持することにつながることがあり、および／またはより多くのビットを透かしのために使うことを許容する。また、この手法では、透かしを除去するのがより困難であることも認識しておくべきであろう。請求項２の実施形態では、透かしは単に関係する下位ビットを除去する（たとえばパラメータをある桁で打ち切る）ことによって除去できる。請求項３の実施形態では、典型的にはより多くのビットを透かしのために使用でき、打ち切りによって透かしを完全に除去すれば品質に影響することになる。
【００１１】
前記選択されたパラメータは好ましくは、機能そのものにも存在している（すなわち、前記パラメータは、当該機能によって使用されるパラメータである）。もしそうであれば、侵害の検出はストレートである。望むなら、前記パラメータは当該機能によって使用される他のパラメータを決定する／他のパラメータに影響する設計パラメータであってもよい。この後者の範疇のパラメータに透かしを埋め込むことは、その透かしはそれらのパラメータに明示的にはないが、やはりその透かしによって他のパラメータに影響する。よって、侵害の証明はより困難である。
【００１２】
従属請求項４の施策によれば、透かしは前記選択されたパラメータに基づいて動的に決定される。透かしを生成するアルゴリズムへの入力として使われるのは、それらのビットの全部でも、あるいは選択された部分だけでもよい。いかなる好適な透かし入れ技術を使用してもよい。動的に決定される透かしは破るのがより難しく、破られたとしても、厳密に同じパラメータをもつプログラム部分にのみ影響する。
【００１３】
従属請求項５の施策によれば、前記選択されたパラメータに対してデジタル署名が計算される。該署名が前記選択されたパラメータのビットの選択された部分を置き換える。これは単純かつ信頼できる技法である。
【００１４】
従属請求項６の施策によれば、前記署名は前記パラメータのすべてのビットに対して計算される。このようにして、信頼できる透かしを得るために十分なエントロピーが達成できる。
【００１５】
従属請求項７の施策によれば、透かしの埋め込みは、前記選択されたパラメータの前記選択された下位ビットを前記生成された署名のそれぞれのビットで置き換えることを含む。これは透かしを埋め込む単純な方法である。
【００１６】
従属請求項８の施策によれば、前記選択されたパラメータの非選択ビットは修正されずに保たれる。この方法では、透かしを使って修正された実際のパラメータを検出することがより容易になる。これは、第三者が不法にコピーされたプログラムの構造を、可能性としてはそのようなコピーを隠すために著しく変え、場合によってはいくつかの下位ビット（ただし全部ではない）も変えた場合に、特に有用である。
【００１７】
従属請求項９は、透かし入れされるのに好適な候補であるパラメータを記載している。
【００１８】
従属請求項１０記載の施策によれば、関数近似の境界点が変更される。しばしば、関数は全区間を部分区間に分割し、部分区間ごとに良好な近似を使うことによって数値的に近似される。区間が部分区間に分割される境界点を選ぶには一定の許容度が存在する。よって、これは透かしを使って変更するための良好な候補である。
【００１９】
これらのことを含む本発明のさまざまな側面は、以下に記載する実施形態を参照することで明らかとなり、明快にされるであろう。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明を用いうるシステムのブロック図を示している。本システムはデジタル信号を処理する装置１６０を含む。信号は好ましくはオーディオ信号（音声を含む）、ビデオ信号（グラフィックを含む）および圧力、温度、電流、電圧などのような物理量を表すその他の信号のような技術的な性質をもつ信号である。装置１６０は、プロセッサ１５０を使ってそのような信号を処理する。プロセッサ１５０はいかなる好適な型でもよく、たとえば信号のストリームを処理するために最適化されたデジタル信号プロセッサ（DSP）でもよいが、ARMプロセッサのようなマイクロコントローラまたはパソコンで使われるような汎用プロセッサであってもよい。プロセッサ１５０によって実行される信号処理機能は、これに限定されないが、フィルタ処理、エンコード／デコード、圧縮／圧縮解除などを含みうる。装置１６０はさらに、プロセッサ１５０によって実行されるプログラムの命令を記憶するプログラムメモリ１４０を含む。ROM、RAM、フラッシュなどを含むいかなる好適なプログラムメモリを使用してもよい。プログラムメモリ１４０はプロセッサ１５０とは別個であってもいいし、あるいはプロセッサ１５０に埋め込まれていてもよい。装置１６０は、信号処理機能を実行するいかなる装置であってもよく、それには、これに限られないが、オーディオおよび／もしくはビデオを処理する消費者電子装置もしくはパーソナルコンピュータまたは化学プロセスのような産業プロセスを制御する装置が含まれる。
【００２１】
本システムはさらに、本発明に基づく方法を実行する装置１００を含む。その方法はのちに図２を参照してより詳細に述べる。装置１００は、透かしが埋め込まれている信号処理機能を、典型的にはソフトウェアの形で生成することができる。この目的のため、装置１００は、信号処理機能のパラメータの部分集合を選択する手段１１０と、前記選択されたパラメータに透かしを埋め込む手段１１４とを含む。本発明は、透かしの埋め込みが当該機能の設計後に行われるか、当該機能の設計前に行われるかに依存して二つの方法で使用されうる。図１および図２は、信号処理機能の設計後に透かしが加えられる状況を示している。ここで、「機能設計後」とは、その機能がすでに完全に設計されている（すなわち本発明に関しては事前に決定済み）か、そうでないとしてもその機能へのいかなる修正も前記選択されたパラメータに影響しない（すなわち、その機能は前記選択されたパラメータに関しては事前に決定済みであるが、他のパラメータに関してはまだ再設計／修正されうる）ということを意味している。
【００２２】
装置１００はいかなる好適な方法で実装されてもよい。好ましくは、装置１００はワークステーションまたはパーソナルコンピュータのようなコンピュータ上で実装され、そこにおいてプロセッサが好適なプログラムの制御のもとに記載される機能を実行する。ここで、前記プログラムを搭載したプロセッサは手段１１０、１１２、１１４の機能の任意のもの、あるいは全部を実行しうる。パラメータはハードディスクのような記憶装置１２０から取得されうる。パラメータは、たとえば信号処理機能を設計した人によって別個に保存されていてもよいし、あるいは信号処理機能中に埋め込まれていてもよい。後者の場合、手段１１０および／または１１２は当該機能からパラメータを取得しなければならない。好ましくは、当該機能の設計者は、そのような取得を可能にするための情報を提供している（たとえば、好適なパラメータを同定するアドレス指定情報の形で）。透かしが埋め込まれた信号処理機能は、記憶媒体１３０上で、あるいはインターネットを通じてなど、該信号処理機能がプログラムメモリ１４０に（たとえば装置１６０のメーカーによって）記憶されるのを可能にするいかなる好適な方法で供給されてもよい。
【００２３】
透かしを埋め込むために好適なパラメータは、とりわけ次のものを表すパラメータである。
・デジタル信号フィルタの係数；
・閾値；
・コスト関数におけるコスト；
・関数近似の係数；
・デジタルグラフィックの近似の制御点。
当業者はデジタル信号処理機能における他の好適なパラメータを容易に選択することができる。
【００２４】
本システムはまた、装置１６０が透かしが埋め込まれた信号処理機能を使うかどうかを検査するための装置１７０も含む。検査はいかなる好適な形でなされてもよい。たとえば、当該機能を使う実際の装置のプログラムメモリ１４０内のパラメータと装置１００によって生成されるパラメータとの間のストレートな比較を行うことができる。
【００２５】
図１および図２の第一の実施形態では、パラメータは、信号処理機能の設計の際に意図された、使用される形ですでに存在している。可能性としては、それらのパラメータのすべてが透かし入れに好適ではない。この目的のため、手段１１０は、信号処理機能の品質に実質的に影響することなく乱すことのできるパラメータを選択する。実際上は、システムを設計する人間が修正されてもよいパラメータのリストをまとめてある。好適な候補パラメータは、当該機能の実行のために少なくとも一つの下位ビットが重要でないようなパラメータである。装置１００はまた、信号処理機能の品質に実質的に影響することなく乱すことのできる前記選択されたパラメータのいくつかの下位ビットを選択する手段１１２をも含んでいる。上に示したのと同様、人間の設計者が、各パラメータについて、透かしによって影響されてはならない上位ビットの最低数を指示している。そこで、手段１１２は、パラメータを記憶するために目標プラットフォーム内で利用可能なビット数（たとえば32または64ビット）を供給されてもよく、この情報に基づいて、その目標プラットフォームについて利用可能な下位ビット数を選択できる。実際上は、さまざまな幅のパラメータについてのDSP／マイクロコントローラが利用可能である。プロセッサによってはさまざまなフォーマットをサポートするものさえある。典型的なフォーマットは、固定小数点パラメータについては16、20、24または32ビットであり、浮動小数点パラメータについては32、64または80である。
【００２６】
装置１００は、前記選択されたパラメータの前記選択された下位ビットに透かしを埋め込む手段１１４を使用する。
【００２７】
図２は、本発明に基づく、デジタル信号処理のソフトウェア実装を保護する方法の第一の実施形態の詳細を示している。本方法は、信号処理機能の品質に実質的に影響することなく乱すことのできる、信号処理機能のパラメータの部分集合を選択するステップ２１０を含む。上記のように、好適なパラメータの事前選択が機能の設計者によってすでになされていてもよい。そのような場合、前記選択ステップは単に、それらの全部を取るか、事前選択の範囲内でさらなる選択をするかでありうる。選択されるパラメータは、信号処理機能の知覚される挙動に影響することなくある程度まで変えることのできるパラメータである（たとえば、いくつかの下位ビットは量子化レベルに満たない）。ステップ２２０では、信号処理機能の品質に実質的に影響することなく（これは効果が補償可能である状況も含む）乱すことのできる前記選択されたパラメータのいくつかの下位ビットが選択される。好ましくは、nビットが「透かし入れされる」状況では、選択されるビットは下位nビットである。しかし、下位ビットの選択をしてもよく、その選択は透かしの一部と見ることができる。たとえば、品質に影響することなくmビット変更できるとすると（m＞n）、これらmビットのうちnビットが、たとえばある鍵の制御のもとで、擬似ランダム的に選択されうる。乱すことのできるビット数はいかなる好適な方法で決められてもよい。たとえば、シミュレーション、理論解析など…である。
【００２８】
ステップ２３０では、前記選択されたパラメータの前記選択された下位ビットに透かしが埋め込まれる。透かしは固定の事前決定された透かしであってもよい。のちにより詳細に述べるように、動的に生成されてもよい。透かしはいかなる好適な仕方で埋め込まれてもよい。たとえば、透かしは、ビットごとのXOR演算を通じて前記選択されたパラメータの前記選択された下位ビットと組み合わされてもよい。透かしはまたそれらのビットを単に置き換えるのでもよい（上書き）。ある代替的な方法は、前記選択されたパラメータの前記選択された下位ビットをある鍵の制御のもとで暗号化することであろう。ここで、透かしをその鍵とすることができる。ある実施形態では、修正できるすべてのビットが実際に修正されるのではなく、それらのビットのうち一つまたは複数が修正されない形に維持される。これは、ソフトウェアの不正使用を同定するのをより困難にするためにその装置においてパラメータが混合／攪拌されている（mixed/shuffled）場合に、装置１７０がパラメータをより簡単に位置特定できるようにする。ビットの一部が未修正であれば、装置１７０はそれらのビットに基づいて探すことができる。追加的な利点として、司法手続きにおいて、証拠がより強いと考えられることがある。
【実施例１】
【００２９】
ある第二の実施形態では、手段１１０を使って選択される、透かし入れされるのに好適なパラメータは、信号処理機能を設計するために使われるものである。上記と同様、人間の設計者が候補のリストをまとめていて、そのリストから選択がなされるのでもよい。機能の設計前にパラメータが選択されるので、使うことのできるいくつかのビットの選択は一般にはそれほど臨界的（critical）ではない。ビットを選択する手段はやはり符号１１２で示される。先の実施形態と同様、手段１１４を使って、選択されたパラメータに透かしが埋め込まれる。パラメータは先の実施形態について先述したのと同じでもよい。しかし、設計の際にのみ使用される、当該機能の基礎となるパラメータを使ってもよい。たとえば、12kHzのカットオフ周波数をもつ低域通過デジタルフィルタを設計する必要があるとすると（すなわち、入力設計パラメータは12kHz）、この設計パラメータに透かし入れすることができる（たとえば、結果として透かし入れされたパラメータの値は12.1987654kHzとなり、ここで0.1987654が透かしである）。この設計パラメータ自身は実際に設計されるフィルタに存在しているパラメータ（すなわち、実際のフィルタ係数）ではない。しかし、実際のフィルタ係数を取り、それらの係数からフィルタのカットオフ周波数を数値的に計算することが可能である。これは、0.1987654という透かしの大部分を回復することになり、コピーの検出を可能にする。
【００３０】
ここで、この第二の実施形態は、パラメータへの透かしの埋め込みが信号処理機能の性能に影響しうる（すなわち、量子化レベルを超えている）が、これが補償可能である（たとえば別のパラメータを通じて当該機能を調整することにより）ような状況のために特に意図されている。この後者の場合の例はのちに関数近似についてより詳細に述べる。ここで、前記二つの実施形態の間の主たる相違は、第一の実施形態については、信号処理機能は埋め込まれた透かしについて最適化されない（よって埋め込みは当該機能が設計されたあとに行われることができる）のに対し、第二の実施形態については、信号処理機能は埋め込まれた透かしについて最適化されない（よって埋め込みは当該機能が設計される前に行われる）ということである。第二の実施形態のアプローチでは、透かしは設計の前または設計中に、好ましくは設計ツールによって加えられる。このようにして、設計された（計算された）パラメータの多くのビット（典型的にはすべてのビット）が透かし入れプロセスによって影響される。よって、品質を保持しつつそれらを変更する簡単な方法はない（単に打ち切りを行っても透かしは完全には除去されない）。
【実施例２】
【００３１】
本方法のある好ましい実施例では（上述した実施形態の両方に適用可能）、透かしは、前記選択されたパラメータに依存して動的に図３のステップ３２０において決定される。多くの種類の依存性を使うことができる。たとえば、透かしは選択されたパラメータ全部の全ビットに依存してもいいし、透かしは前記選択されたパラメータの前記選択されたビットにのみ依存してもいいし。透かしは前記選択されたパラメータの非選択ビットにのみ依存してもいい、などである。それぞれのアプローチは独自の利点がある。たとえば、全ビットを使えばエントロピーが大きくなる。非選択ビットを使うことは、透かしが、変更されておらず、よってきわめて目立つビットにのみ依存するという利点がある。これは、それらのパラメータが透かし入れされたことを証明する助けとなりうる。選択されたビットを使うことは、それらのビットが透かしによって単に上書きされてしまう状況でも、それらのビットが透かしに実際に貢献したという利点がある。好ましくは、透かしはステップ３２０において暗号技術を使って動的に計算される。いかなる好適な技術を使ってもよい。
【００３２】
図３は、あるさらなる実施形態をも示している。まず、ステップ３１０においてビットのブロックが形成される。このビットのブロックは、各選択されたパラメータの少なくとも一つのビットを含む。その際、ステップ３２０に示されるような透かしの計算は、ある所定の鍵の制御のもとで形成されたブロックのデジタル署名を計算することによってなされる。図４Ａは、例示的なパラメータ４１０、４２０、４３０のうち、b0ないしb7の符号が付けられたそれぞれ８つの下位ビット（LSB）を使って24ビットのブロック４４０が形成されることを示している。上述したように、ブロック４４０は他の選択されたビットから形成されても同じようによい。パラメータの逐次的なビットを使うことは、ブロックの形成をストレートにする。しかしながら、望むなら、別の選択をしてもよい。ある鍵の制御のもとでの擬似ランダムな選択などである。図４Ｂは、ブロック４４０がパラメータ４１０、４２０、４３０の実質的にすべてのビットを含むあるさらなる実施形態を示している。
【００３３】
次に、透かしが25個の32ビット浮動小数点パラメータに埋め込まれる例を与える。パラメータは、５つのグループ（filt1、filt2  SECTION1、filt2  SECTION  2、filt3  SECTION  1、filt3  SECTION  2）として示されており、各グループが５つのパラメータ（A0、A1、A2、B1、B2）をもつ。この例では、パラメータは次の値をもつ：
static  BIQUAD_Coefs  filtl[1*5]=
{8.93973493820715E-0001f,  /*A0*/
-1.78794698764143E+0000f,  /*A1*/
8.93973493820715E-0001f,  /*A2*/
-1.78791066853493E+0000f,  /*B1*/
8.87983306747928E-0001f  /*B2*/};
static  BIQUAD_Coefs  filt2[2*5]=
{/*  *SECTION  1    浮動小数点32ビットIIRライブラリ"SS"  */
3.08440265117571E-0008f,  /*A0*
2.16880542388767E-0008f,  /*Al*/
3.08440266659157E-0008f,  /*A2*/
-1.85565557939837E+0000f,  /*B1*/
8.56229364078828E-000lf,  /*B2*/
/*  *SECTION  2    浮動小数点32ビットIIRライブラリ"SS"  */
1.00000000000000E+0000f,  /*A0*/
2.99999994169253E+0000f,  /*A1*/
7.99999992604188E-0001f,  /*A2*/
-1.88105292049614E+0000f,  /*B1*/
8.81634156692019E-0001f  /*B2*/};
static  BIQUAD_Coefs  filt3[2*5]=
{/*  *SECTION  1    浮動小数点32ビットIIRライブラリ"SS"  */
3.78857742794282E-0005f,  /*A0*/
4.57715485588563E-0005f,  /*A1*/
3.78857742794282E-0005f,  /*A2*/
-1.89193814821509E+0000f,  /*B1*/
8.92366735223261E-0001f,  /*B2*/
/*  *SECTION  2    浮動小数点32ビットIIRライブラリ"SS"  */
1.00000000000000E+0000f,  /*A0*/
-4.00000000000000E+0000f,  /*A1*/
1.00000000000000E+0000f,  /*A2*/
-2.99581991517854E+0000f,  /*B1*/
8.95940882922500E-0001f  /*B2*/};
十六進表現では、上記の32ビットは次の値を含んでいる（グループごとに示す）：
0x3f64db72  0xbfe4db72  0x3f64db72  0xbfe4da42  0x3f6352e0
0x3304795e  0x32ba4c89  0x3304795e  0xbfed861f  0x3f5b31d9
0x3f800000  0x40400000  0x3f4ccccd  0xbff0c658  0x3f61b2c7
0x381ee78a  0x383ffad3  0x381ee78a  0xbff22b07  0x3f647225
0x3f800000  0xc0800000  0x3f800000  0xc03fbb83  0x3f655c62
この例では、原則として各パラメータの下位8ビットを置き換えて上位24ビットを維持することができる。透かしは、25パラメータのブロックに作用するHMAC（鍵付きメッセージ認証コード）を使ってデジタル署名を生成することによって計算される。HMACとしてはSHA-1ハッシュ関数が使われた。鍵としては、PHILIPSPDSLLEUVENRIS^A^B^C^D^E^F^G^Hが使われた。ここで、^AはCTRL-A（ASCIIコード01）を表し、^BはCTRL-B（ASCIIコード02）を表す、などである。この関数は160ビットの署名を与える。この例では、署名は最初の20個のパラメータの下位8ビットに挿入される（分割される）。最後の５つのパラメータは変更されない。それらのパラメータは署名計算には参加していたことを注意しておく。これは次の修正された係数を与える：
0x3f64db3c  0xbfe4dbb5  0x3f64dbf8  0xbfe4daf2  0x3f6352df
0x33047965  0x32ba4c1f  0x330479bb  0xbfed868a  0x3f5b319e
0x3f80002e  0x4040008a  0x3f4ccc34  0xbff0c61d  0x3f61b2d6
0x381ee7ce  0x383ffa39  0x381ee73b  0xbff22b43  0x3f647208
0x3f800000  0xc0800000  0x3f800000  0xc03fbb83  0x3f655c62
【実施例３】
【００３４】
本発明に基づくある実施形態では、信号処理機能は区間の部分区間ごとに近似される。この実施形態のために考慮されるパラメータは逐次の部分区間についての境界点の係数である。これは、関数〔機能（function）〕を数値的に近似できる方法はいくつかあるという事実に基づいている。ある区間上での関数の性能および近似品質を改善するのに使われる技法の一つは、区間をいくつかの区分（逐次的な部分区間）に分割し、それらの部分区間のそれぞれで当該関数の最良近似を見出すことである。そのようなアプローチは区分近似と称することにする。「分割点」は部分区間の境界点をなす。区間を分割する方法は一般に決定的ではない：境界についての変動が近似品質に対してもてる影響は小さい。変動に対するこの許容度のおかげで、分割点の座標の値の下位ビットに、暗号学的に安全な署名のような透かしを埋め込むことが可能である。この実施形態は図５に示されている。そこで使っている例は、区間[0..2]上の関数y＝f(x)＝1＋cos(0.5*x)の、分割点をx＝1.1とした区分近似である。図５は、二つの区分が二次多項式（すなわち放物線）によって近似され、関数y＝f(x)の次の区分近似を与えている状況を示している：
y＝1.88634−0.573305*x−0.24336*x2    x∈[0..1.1]
y＝2.43188−1.57329*x  +  0.227149*x2    x∈]1.1..2]
そして、x＝1.1が分割点である。
【００３５】
これは近似と近似される関数との間の絶対誤差について次の最大値を与える：
max  ε左＝0.00956336
max  ε右＝0.00530383
同じ近似を保持しつつ分割点を1.1から1.2に動かす、すなわち：
y＝1.88634−0.573305*x−0.24336*x2    x∈[0..1.2]
y＝2.43188−1.57329*x  +  0.227149*x2    x∈]1.2..2]
を使うと、次の誤差値が与えられる：
max  ε左＝0.0232218
max  ε右＝0.00497099
同様にして分割点を1.1から1.0に動かすと、次の誤差値が与えられる。
max  ε左＝0.00875632
max  ε右＝0.0149952
この例から見て取れるように、1.0から1.2までの間の任意のところに境界を移すことは最大で0.024の近似誤差の増加を与える。これが近似の品質に実質的に影響しなければ、このパラメータの主要な変化が可能である。分割点のx座標について32ビットの浮動小数点表現（指数8ビット、仮数24ビット）を使うと、次の十六進値が得られる：
1.0：0x3f800000
1.1：0x3f8ccccd
1.2：0x3f99999a
これは、近似の品質を実質的に変えることなく、仮数の21ビットを暗号学的に安全な署名で置き換えることができると言うことを意味している。変えてもよいという意味で「下位」と考えられるビットの量は、分割点の位置への感度が低いほど大きいことは理解されるであろう。
【００３６】
前記第二の実施形態のアプローチに従うある例では、境界が移されるという事実が考慮に入れられ、補償される。関数近似は好ましくは、分割点の位置の大きな範囲内での変化がそれらの変動の全体的な精度への影響を最小化するよう最適化される。これは次の、分割点を動かしたい範囲の追加的情報を使う例で示される。曲線の左の部分は[0..1.2]上で近似する当該関数の値を考慮に入れる多項式を使って近似される一方、右の部分は[1.0..2]上で近似される。これは区間[1.0..1.2]上で両近似の間の重なりを生じる。
【００３７】
これは次の新たな区分近似を与える：
y＝1.88926−0.593899*x−0.22093*x2    x∈[0..1.1]
y＝2.37313−1.49926*x  +  0.204311*x2    x∈]1.1..2]
誤差特性は次のようになる：
max  ε左＝0.011674
max  ε右＝0.00699143
分割点を1.2に動かすと次のようになる：
max  ε左＝0.0127175
max  ε右＝0.00699143
分割点を1.1に動かすと次のようになる：
max  ε左＝0.011674
max  ε右＝0.00745122
近似の事前調整（pre-conditioning）は0.024の代わりに0.013の誤差閾値をもつ最終的な近似を与える。
【００３８】
当業者は、上記の方法が、実行サイクルおよび記憶装置要件の点で処理モジュールの実行時挙動を変更しないことを容易に認識するであろう。
【００３９】
本発明が、本発明を実施するために適応された、担体上または担体中にあるコンピュータプログラムにも広がることは認識されるであろう。プログラムはソースコード、オブジェクトコード、部分的にコンパイルされた形式のようなソースコードとオブジェクトコードの中間のコードの形であっても、あるいは本発明に基づく方法の実装において使用するのに好適な他のいかなる形であってもよい。前記担体は前記プログラムを担持することのできるいかなるエンティティまたはデバイスであってもよい。たとえば、前記担体は、たとえばCD-ROMもしくは半導体ROMなどのROMまたはたとえばフロッピー（登録商標）ディスクもしくはハードディスクのような磁気記録媒体といった記憶媒体を含みうる。さらに、前記担体は、電気ケーブルもしくは光ケーブルを介してまたは無線もしくはその他の手段によって伝達されうる、電気信号もしくは光信号のような送信可能担体であってもよい。前記プログラムがそのような信号において具現されているとき、前記担体はそのようなケーブルまたは他のデバイスもしくは手段によって構成されうる。あるいはまた、前記担体は、当該方法を実行するよう、あるいは当該方法の実行において使用されるよう適応されている、前記プログラムが埋め込まれる集積回路であってもよい。
【００４０】
上記の諸実施形態は本発明を限定するのではなく解説するものであり、当業者は付属の請求項の範囲から外れることなく数多くの代替的な実施形態を設計できるであろうことは注意しておくべきである。請求項において、括弧内に参照符号があったとしてもその請求項を限定するものと解釈してはならない。動詞「有する」およびその活用形の使用は請求項において述べられているもの以外の要素またはステップの存在を排除しない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を有するハードウェアによって、および好適にプログラミングされたコンピュータによって実装されてもよい。いくつかの手段を列挙している装置請求項においては、それらの手段のいくつかが同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において言及されているというだけの事実がそれらの施策の組み合わせが有利に使用できないことを示すものではない。
【図面の簡単な説明】
【００４１】
【図１】本発明を用いうるシステムのブロック図である。
【図２】本発明に基づく方法の流れ図である。
【図３】本発明のさらなる実施形態を示す図である。
【図４】透かしを決定するためにビットのブロックを形成することを示す図である。
【図５】関数近似を示す図である。
【図１】
2008520009.tif 000003
【図２】
2008520009.tif 000004
【図３】
2008520009.tif 000005
【図４Ａ】
2008520009.tif 000006
【図４Ｂ】
2008520009.tif 000007
【図５】
2008520009.tif 000008
【国際調査報告】
2008520009.tif 000009
2008520009.tif 000010