(57)【要約】【課題】電子的な透かし情報の埋込場所の解析が困難であり、ひいては、透かし情報の改竄が困難となるプログラムを提供する。【解決手段】プログラムを構成する各命令コードの不使用ビットに透かし情報データを構成するビットを書き込むことによりプログラムに透かし情報を埋め込む。【選択図】図３
2009169492.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを構成する各命令コードの不使用ビットに透かし情報データを構成するビッ
トを書き込むことにより前記プログラムに透かし情報を埋め込むことを特徴とする情報処
理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記プログラムを構成する命令コードのうち、特定の種類の前記命令コードの不使用ビ
ット位置を検出する不使用ビット位置検出部と、
前記不使用ビット位置検出部により検出された不使用ビット位置に前記透かし情報デー
タを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部と、
を備えたことを特徴とする情報処理装置。
【請求項３】
請求項１記載の情報処理装置において、
前記プログラムを構成する命令コードを、当該プログラムにおける命令コードの配置順
に順次検索し、少なくとも前記透かし情報データを構成する全てのビットの書込に必要な
ビット数の不使用ビット位置を検出する不使用ビット位置検出部と、
前記不使用ビット位置検出部により検出された不使用ビット位置に前記透かし情報デー
タを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部と、
を備えたことを特徴とする情報処理装置。
【請求項４】
請求項１記載の情報処理装置において、
前記プログラムを構成する命令コードを、所定の条件下で前記プログラムを実行した場
合の前記命令コードの実行順に順次検索し、少なくとも前記透かし情報データを構成する
全てのビットの書込に必要なビット数の不使用ビット位置を検出する不使用ビット位置検
出部と、
前記不使用ビット位置検出部により検出された不使用ビットに前記透かし情報データを
構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部と、
を備えたことを特徴とする情報処理装置。
【請求項５】
請求項４記載の情報処理装置において、
前記所定の条件は、特定の順番で特定のデータを入力する、ことであることを特徴とす
る情報処理装置。
【請求項６】
請求項３ないし請求項５のいずれかに記載の情報処理装置において、
検索された命令コードに含まれる全ての不使用ビットあるいは所定数の不使用ビットに
前記透かし情報データを構成するビットを書き込むことを特徴とする情報処理装置。
【請求項７】
請求項１ないし請求項６のいずれかに記載の情報処理装置において、
前記透かし情報データの埋込が少なくとも１回なされた状態で、未だ存在する不使用ビ
ットに対し、繰り返し前記透かし情報データを構成するビットの書き込みを行い、あるい
は、ランダムデータの書き込みを行うことを特徴とする情報処理装置。
【請求項８】
プログラムを構成する各命令コードの不使用ビット位置を検出する不使用ビット位置検
出過程と、
前記不使用ビット位置検出過程において検出された不使用ビット位置に前記透かし情報
データを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込過程と、
を備えたことを特徴とする情報処理装置の制御方法。
【請求項９】
プログラムに対して処理を行う情報処理装置をコンピュータにより制御する制御プログ
ラムにおいて、
前記プログラムを構成する各命令コードの不使用ビット位置を検出させ、
前記検出された不使用ビット位置に前記透かし情報データを構成するビットを書き込ん
で前記プログラムに埋め込ませる、
ことを特徴とする制御プログラム。
【請求項１０】
当該プログラムを構成する命令コードの不使用ビットに透かし情報データを構成するビ
ットが書き込まれることにより透かし情報が埋め込まれたプログラムを記録したことを特
徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
情報処理装置、情報処理装置の制御方法、制御プログラム及び記録媒体に係り、特に電
子機器の出所などを特定するための透かし情報を埋め込むための技術に関する。
【背景技術】
【０００２】
従来、プログラム制作者とは別個のプログラム販売者が、販売対象のプログラムに自己
の電子署名を自由に追加して、当該販売対象のプログラムの出所を明らかにするに際し、
動作に影響を与えないダミーモジュールをプログラムに追加し、当該ダミーモジュール内
に電子署名を電子透かしとして埋め込むものが提案されている（例えば、特許文献１参照
）。
【特許文献１】特開２００５−１００３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記従来の手法によれば、プログラムに追加されたダミーモジュール内に電子署名を埋
め込む構成を採っているため、プログラムコードを解析して、実際の動作に影響を与えな
い領域を特定することにより、電子署名の埋め込まれている領域を容易に特定される可能
性があり、電子署名を容易に改竄されるおそれがあった。
そこで、本発明の目的は、電子的な透かし情報の埋込場所の解析が困難であり、ひいて
は、透かし情報の改竄が困難となるプログラムを提供することが可能な情報処理装置、情
報処理装置の制御方法及び制御プログラムならびに透かし情報を埋め込んだプログラムが
記録された記録媒体を提供することにある。
【課題を解決するための手段】
【０００４】
上記課題を解決するため、本発明の第１態様は、プログラムを構成する各命令コードの
不使用ビットに透かし情報データを構成するビットを書き込むことにより前記プログラム
に透かし情報を埋め込むことを特徴としている。
上記構成によれば、透かし情報データを構成するビットは、プログラムを構成する各命
令コードの不使用ビットに書き込まれているので、プログラムの実行時には、無視され、
その動作に影響を与えることがない。
また、透かし情報データを構成するビットの書き込みにより、プログラムのサイズが元
のプログラムに対して変化することもない。
これらの結果、透かし情報の解析が困難となり、透かし情報の改竄、除去などを抑制す
ることができる。
【０００５】
また、本発明の第２の態様は、第１の態様において、前記プログラムを構成する命令コ
ードのうち、特定の種類の前記命令コードの不使用ビット位置を検出する不使用ビット位
置検出部と、前記不使用ビット位置検出部により検出された不使用ビット位置に前記透か
し情報データを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部
と、を備えたことを特徴としている。
上記構成によれば、不使用ビット位置検出部は、前記プログラムを構成する命令コード
のうち、特定の種類の前記命令コードの不使用ビット位置を検出し、透かし情報埋込部は
、不使用ビット位置検出部により検出された不使用ビット位置に前記透かし情報データを
構成するビットを書き込んで前記プログラムに埋め込むので、プログラム中で透かし情報
データを構成するビットが分散して埋め込まれるので、より透かし情報の解析が困難とな
る。
【０００６】
また、本発明の第３の態様は、第１の態様において、前記プログラムを構成する命令コ
ードを、当該プログラムにおける命令コードの配置順に順次検索し、少なくとも前記透か
し情報データを構成する全てのビットの書込に必要なビット数の不使用ビット位置を検出
する不使用ビット位置検出部と、前記不使用ビット位置検出部により検出された不使用ビ
ット位置に前記透かし情報データを構成するビットを書き込んで前記プログラムに埋め込
む透かし情報埋込部と、を備えたことを特徴としている。
上記構成によれば、不使用ビット位置検出部は、前記プログラムを構成する命令コード
を、当該プログラムにおける命令コードの配置順に順次検索し、少なくとも前記透かし情
報データを構成する全てのビットの書込に必要なビット数の不使用ビット位置を検出し、
透かし情報埋込部は、不使用ビット位置検出部により検出された不使用ビット位置に前記
透かし情報データを構成するビットを書き込んで前記プログラムに埋め込むので、プログ
ラム中で透かし情報データを構成するビットが分散して埋め込まれるので、より透かし情
報の解析が困難となる。
【０００７】
また、本発明の第４の態様は、第１の態様において、前記プログラムを構成する命令コ
ードを、所定の条件下で前記プログラムを実行した場合の前記命令コードの実行順に順次
検索し、少なくとも前記透かし情報データを構成する全てのビットの書込に必要なビット
数の不使用ビット位置を検出する不使用ビット位置検出部と、前記不使用ビット位置検出
部により検出された不使用ビットに前記透かし情報データを構成するビットを書き込んで
前記プログラムに埋め込む透かし情報埋込部と、を備えたことを特徴としている。
上記構成によれば、不使用ビット位置検出部は、前記プログラムを構成する命令コード
を、所定の条件下で前記プログラムを実行した場合の前記命令コードの実行順に順次検索
し、少なくとも前記透かし情報データを構成する全てのビットの書込に必要なビット数の
不使用ビット位置を検出し、透かし情報埋込部は、不使用ビット位置検出部により検出さ
れた不使用ビットに前記透かし情報データを構成するビットを書き込んで前記プログラム
に埋め込むので、同一のプログラムであっても、所定の条件を変更することで様々な態様
で透かし情報を埋め込むことが可能となる。
【０００８】
本発明の第５の態様は、第４の態様において、前記所定の条件は、特定の順番で特定の
データを入力する、ことであることを特徴としている。
上記構成によれば、容易に所定の条件を変更することができ、より容易に様々な態様で
透かし情報を埋め込むことができ、透かし情報の解析を困難とすることができる。
【０００９】
本発明の第６の態様は、第３ないし第５の態様において、検索された命令コードに含ま
れる全ての不使用ビットあるいは所定数の不使用ビットに前記透かし情報データを構成す
るビットを書き込むことを特徴としている。
上記構成によれば、様々な態様で透かし情報を埋め込むことができ、透かし情報の解析
を困難とすることができる。
【００１０】
本発明の第７の態様は、第１の態様ないし第６の態様のいずれかにおいて、前記透かし
情報データの埋込が少なくとも１回なされた状態で、未だ存在する不使用ビットに対し、
繰り返し前記透かし情報データを構成するビットの書き込みを行い、あるいは、ランダム
データの書き込みを行うことを特徴としている。
上記構成によれば、透かし情報の位置をより特定しにくくし、透かし情報の解析を困難
とすることができる。
【００１１】
また、本発明の第８の態様は、情報処理装置の制御方法において、プログラムを構成す
る各命令コードの不使用ビット位置を検出する不使用ビット位置検出過程と、前記不使用
ビット位置検出過程において検出された不使用ビット位置に前記透かし情報データを構成
するビットを書き込んで前記プログラムに埋め込む透かし情報埋込過程と、を備えたこと
を特徴としている。
上記構成によれば、透かし情報データを構成するビットは、プログラムを構成する各命
令コードの不使用ビットに書き込まれているので、プログラムの実行時には、無視され、
その動作に影響を与えることがなく、透かし情報データを構成するビットの書き込みによ
り、プログラムのサイズが元のプログラムに対して変化することもないので、透かし情報
の解析が困難となり、透かし情報の改竄、除去などを抑制することができる。
【００１２】
本発明の第９の態様は、プログラムに対して処理を行う情報処理装置をコンピュータに
より制御する制御プログラムにおいて、前記プログラムを構成する各命令コードの不使用
ビット位置を検出させ、前記検出された不使用ビット位置に前記透かし情報データを構成
するビットを書き込んで前記プログラムに埋め込ませる、ことを特徴としている。
上記構成によれば、透かし情報データを構成するビットは、プログラムを構成する各命
令コードの不使用ビットに書き込まれているので、プログラムの実行時には、無視され、
その動作に影響を与えることがなく、透かし情報データを構成するビットの書き込みによ
り、プログラムのサイズが元のプログラムに対して変化することもないので、透かし情報
の解析が困難となり、透かし情報の改竄、除去などを抑制することができる。
【００１３】
本発明の第１０の態様は、コンピュータ読み取り可能な記録媒体において、当該プログ
ラムを構成する命令コードの不使用ビットに透かし情報データを構成するビットが書き込
まれることにより透かし情報が埋め込まれたプログラムを記録しているので、プログラム
の実行時には、透かし情報は、無視され、その動作に影響を与えることがなく、透かし情
報データを構成するビットの書き込みにより、プログラムのサイズが元のプログラムに対
して変化することもないので、透かし情報の解析が困難となり、透かし情報の改竄、除去
などを抑制することができる。
【発明を実施するための最良の形態】
【００１４】
次に図面を参照して本発明の好適な実施の形態について説明する。
図１は、実施形態の情報処理装置の概要構成ブロック図である。
情報処理装置１０は、大別すると、各種情報処理を行う情報処理装置本体１１と、各種
情報を表示する表示装置１２と、ユーザが各種操作を行うキーボード、マウスなどの操作
部１３と、透かし情報を生成するための埋込対象情報およびプログラムのソースコード及
びバイナリコードを格納する外部記憶装置１４と、外部記憶媒体１５に透かし情報を埋め
込んだプログラムを書き込むことが可能な媒体リード／ライト装置１６と、を備えている
。
ここで、外部記憶媒体１５としては、ＰＲＯＭなどの半導体メモリ、半導体メモリカー
ド、光ディスク、磁気ディスクなどが挙げられる。
情報処理装置本体１１は、コンピュータとして構成されており、各種処理を行うＭＰＵ
２１と、制御プログラムを含む各種データを記憶するＲＯＭ２２と、各種データを一時的
に記憶するＲＡＭ２３と、を備え、各部は、バス２４を介して接続されている。
【００１５】
ここで、具体的な説明に先立ち、本発明の原理について説明する。
通常、ＭＰＵ２１などのプロセッサにおいては、処理の簡略化のため、固定ビット長で
命令（＝命令コード＋オペランド）を定義している。このため命令の種類によっては、当
該命令の動作に影響を与えない、すなわち、機能、役割を与えられていないビットが命令
の命令コード中に含まれる。これらのビットは、各命令の実行において用いられることは
ないため、以下においては、不使用ビットという。不使用ビットのビット数は、命令によ
り異なり、１ビット〜複数ビットがある。
【００１６】
図２は、１６ビット長の命令を有するプロセッサの命令セットの例を説明する図である
。
上述したように、各命令は、命令コードを含んでおり、さらに必要に応じて、オペラン
ドを含んでいる。例えば、ａｎｄ命令は、１６ビット中、第６ビット〜第１５ビット（Ｍ
ＳＢ）が命令コードであり、第０ビット〜第５ビットは、オペランドである。また、ｊｍ
ｐ命令は、１６ビット中、第１０ビット〜第１５ビット（ＭＳＢ）が命令コードであり、
第０ビット〜第９ビットは、オペランドである。また、ｎｏｐ命令は、オペランドが存在
せず、１６ビット全部が命令コードである。
図２に示すように、命令のうち、ｌｉ命令（即値ロード命令）、ｌｄ命令（データロー
ド命令）、ｓｔ命令（データストア命令）については、不使用ビットが存在していない。
これに対し、ａｄｄ命令（加算命令）、ｓｕｂ命令（減算命令）、ａｎｄ命令（論理積
命令）、ｏｒ命令（論理和命令）およびｘｏｒ命令（排他的論理和命令）については、図
２に斜線部分で示すように、第６ビットから第１０ビットの５ビットの不使用ビットが存
在している。
【００１７】
また、ｊｍｐ命令（ジャンプ命令）及びｊｚ命令（零時ジャンプ命令）については、図
２に斜線部分で示すように、第１０ビットの１ビットの不使用ビットが存在している。
また、ｎｏｐ命令（ノーオペレーション命令）については、図２に斜線部分で示すよう
に、第０ビットから第１０ビットの１１ビットの不使用ビットが存在している。
これらの不使用ビットは、その値を書き換えたとしても命令の実行に何ら影響を与えな
い。
そこで、本実施形態においては、これらの不使用ビットの少なくとも一部に透かし情報
データを構成するビットを書き込むことにより、元のプログラムのサイズ、動作に影響を
与えることなく、透かし情報を埋め込むことが可能となっている。
【００１８】
図３は、透かし情報埋込処理の機能説明図である。
また、図４は透かし情報埋込処理の処理フローチャートである。
まず、プログラムのソースを読み込み（ステップＳ１）、コンパイルしてバイナリコー
ドとする（ステップＳ２）。
一方、透かし情報としての認証情報を読み込み（ステップＳ３）、透かし情報データに
変換する（ステップＳ４）。なお、透かし情報としては、認証情報に限らず、所望の情報
をデータ化したものであればよい。
つづいて、プログラムのバイナリコードに含まれる命令コード及び対応する不使用ビッ
トの位置を検索する（ステップＳ５）。
この場合において、命令コード及び不使用ビットの位置の検索の手順としては、以下の
（Ａ１）〜（Ａ３）のようなものが考えられる。
【００１９】
（Ａ１）  プログラムの格納アドレスにしたがって、命令コード及び当該命令コードに
おける不使用ビット位置を検索する。
例えば、アドレスの先頭から最後尾に向かって順に命令コードを検索し、各命令コード
を構成する不使用ビットもアドレスの先頭から最後尾に向かって順に検索する。
【００２０】
（Ａ２）  プログラムの格納アドレスにしたがって、所定の種類の命令コード及び当該
命令コードにおける不使用ビット位置を検索する。
例えば、所定の種類の命令コードとして、ａｄｄ命令およびｓｕｂ命令を検索対象とす
る場合、アドレスの先頭から最後尾に向かって順にａｄｄ命令およびｓｕｂ命令の命令コ
ードを検索し、各命令コードを構成する不使用ビットもアドレスの先頭から最後尾に向か
って順に検索する。
【００２１】
（Ａ３）  プログラムに予め定めた特定のデータを予め定めた特定の順番で入力して処
理を行わせたと仮定した場合の処理実行順に命令コード及び当該命令コードにおける不使
用ビット位置を検索する。
例えば、入力データとして“０”を入力し続けた場合にプログラムが実行される順番で
命令コードをを検索し、各命令コードを構成する不使用ビットについてはアドレスの先頭
から最後尾に向かって順に検索する。
【００２２】
つづいてＭＰＵは、検索された不使用ビットに透かし情報データを構成するビット列を
順に埋め込む（ステップＳ６）。
この場合において、透かし情報データを構成するビット列を埋め込む手順としては、以
下の（Ｂ１）〜（Ｂ３）のようなものが考えられる。
【００２３】
（Ｂ１）  検索された各命令コードを構成する不使用ビットのうち、ＬＳＢ側（第０ビ
ット側）からＭＳＢ側に向かって、あるいは、ＭＳＢ側からＬＳＢ側に向かって順に透か
し情報データを構成するビット列を埋め込む。
例えば、各命令が１６ビット長の固定ビット長で形成されている場合に、第６ビットか
ら第１０ビットが不使用ビットである場合に、ＬＳＢ側から埋め込む場合、第６ビットか
ら第１０ビットに向かってビット列を順に埋め込むこととなる。
【００２４】
（Ｂ２）  少なくとも透かし情報データを構成するビット列を埋め込むのに十分な数の
不使用ビットが検索された時点で、検索された不使用ビットを含む命令コードについて、
命令コードが検索された順番で下位ビット側あるいは上位ビット側から順番に透かし情報
データを構成するビット列を埋め込む。
例えば、ａｄｄ命令→ｓｕｂ命令→ｎｏｐ命令が順番に検索された場合、上述の例の場
合、ａｄｄ命令およびｓｕｂ命令については、第６ビットから第１０ビットの５ビットの
不使用ビットが存在し、ｎｏｐ命令については、第０ビットから第１０ビットの１１ビッ
トの不使用ビットが存在しているので、下位ビット側から順番に透かし情報データを構成
するビット列を埋め込む場合には、ｎｏｐ命令の第０ビット→ｎｏｐ命令の第１ビット→
…→ｎｏｐ命令の第４ビット→ｎｏｐ命令の第５ビット→ａｄｄ命令の第６ビット→ｓｕ
ｂ命令の第６ビット→ｎｏｐ命令の第６ビット→ａｄｄ命令の第７ビット→ｓｕｂ命令の
第７ビット→ｎｏｐ命令の第７ビット→…→ａｄｄ命令の第１０ビット→ｓｕｂ命令の第
１０ビット→ｎｏｐ命令の第１０ビットの順番でビット列を順に埋め込むこととなる。
【００２５】
（Ｂ３）  検索された各命令コードを構成する不使用ビットのうち、所定の位置の所定
数のビットに順に透かし情報データを構成するビット列を埋め込む。
例えば、検索された各命令コードの不使用ビットのうち、それぞれ最上位ビット（上述
のａｄｄ命令の場合、第１０ビット）に１ビットの透かし情報データを構成するビットを
埋め込む。
（Ｂ４）  上記（Ｂ１）〜（Ｂ３）の手順において、残りの不使用ビットには、透かし
情報データを構成するビット列を繰り返し埋め込んだり、任意のデータをランダムに書き
込んだりするように構成してもよい。
【００２６】
これらの結果、透かし情報を埋め込んだバイナリコードのプログラムが生成されるので
、これを各種電子機器のファームウェアとして、ＲＯＭあるいはＥＥＰＲＯＭなどの書き
換え可能な不揮発性メモリに書き込んで、電子機器に組み込むこととなる（ステップＳ７
）。
そして、図３に示すように、その後、複製されたことが疑われるＲＯＭあるいはＥＥＰ
ＲＯＭなどの書き換え可能な不揮発性メモリが見いだされた場合には、透かし情報データ
を書き込んだのと同様の手順で、ＲＯＭあるいはＥＥＰＲＯＭなどの書き換え可能な不揮
発性メモリから透かし情報データを抽出して、読み出し（ステップＳ１１）、書き込んだ
透かし情報と照合し（ステップＳ１２）、書き込んだ透かし情報と同一の透かし情報ある
いは同一の透かし情報と特定可能な程度の透かし情報の一部が読み出された場合には複製
がなされたと容易に判別することが可能となる。
この結果、不法な複製がなされることを抑止できると共に、不法な複製がなされた場合
に対処することが可能となる。
【００２７】
ここで、具体的な透かし情報の埋込処理の具体例について説明する。
図５は、プログラムのソースコードの一例の説明図である。
図５に示すプログラムにおいて、途中には条件分岐命令として、演算結果が０であった
場合にラベルＬＡＢＥＬに分岐させるｊｚ命令が記載されている。
図６は、図５に示したプログラムのメインルーチンであるＳＴＡＲＴルーチンをコンパ
イルした場合の、バイナリコードのビット配列を説明するための図である。
図６中、ハッチングで示した部分は、命令コード中の不使用ビット位置を表しており、
図６の場合、全部で２７ビットの不使用ビットが含まれている。
【００２８】
図７は、透かし情報データのビット列の説明図である。
図７においては、透かし情報データのビット列は、２６ビットで構成されており、理解
を容易にするため各ビットをアルファベット「Ａ」〜「Ｚ」で表記している。すなわち、
「Ａ」〜「Ｚ」は、それぞれ１ビットであり、その値は“０”または“１”である。
【００２９】
図８は、第１具体例の透かし情報データのビット列の埋込状態の説明図である。
第１具体例は、上述した（Ａ１）の手順で命令コードおよび不使用ビットを検索し、上
述した（Ｂ１）の手順に従ってＬＳＢ側から命令コード中の不使用ビットに透かし情報デ
ータのビット列を埋め込んだ場合のものである。
この場合には、第１番目にアドレス＝“１００ｈ”（ｈは１６進数を表す。以下同じ。
）に格納されているａｎｄ命令が検索され、ａｎｄ命令を構成する不使用ビットの第６ビ
ットから第１０ビットに対し、第６ビットから第１０ビットに向かう順番で透かし情報デ
ータビット列のうち、「Ａ」〜「Ｅ」の５ビット分を順次埋め込むこととなる。
つづいて、第２番目にアドレス＝“１０２ｈ”に格納されているａｄｄ命令が検索され
、ａｄｄ命令を構成する不使用ビットの第６ビットから第１０ビットに対し、第６ビット
から第１０ビットに向かう順番で透かし情報データビット列のうち、「Ｆ」〜「Ｊ」の５
ビット分を順次埋め込むこととなる。
【００３０】
同様に、アドレス＝“１０６ｈ”に格納されているｘｏｒ命令を構成する不使用ビット
の第６ビットから第１０ビットに対し、透かし情報データビット列のうち、「Ｋ」〜「Ｏ
」の５ビット分が順次埋め込まれ、アドレス＝“１０８ｈ”に格納されているｓｕｂ命令
を構成する不使用ビットの第６ビットから第１０ビットに対し、透かし情報データビット
列のうち、「Ｐ」〜「Ｔ」の５ビット分が順次埋め込まれ、アドレス＝“１０Ａｈ”に格
納されているｊｚ命令を構成する不使用ビットの第１０ビットに対し、透かし情報データ
ビット列のうち、「Ｕ」の１ビット分が埋め込まれ、アドレス＝“１１０ｈ”に格納され
ているｏｒ命令を構成する不使用ビットの第６ビットから第１０ビットに対し、透かし情
報データビット列のうち、「Ｖ」〜「Ｚ」の５ビット分が順次埋め込まれることとなる。
【００３１】
図９は、第２具体例の透かし情報データのビット列の埋込状態の説明図である。
第２具体例は、上述した（Ａ１）の手順で命令コードおよび不使用ビットを検索し、上
述した（Ｂ２）の手順に従って下位ビット側から命令コード中の不使用ビットに透かし情
報データのビット列を埋め込んだ場合のものである。
この場合には、第１番目にアドレス＝“１００ｈ”に格納されているａｎｄ命令が検索
され、第２番目にアドレス＝“１０２ｈ”に格納されているａｄｄ命令が検索され、第３
番目にアドレス＝“１０６ｈ”に格納されているｘｏｒ命令が検索され、第４番目にアド
レス＝“１０８ｈ”に格納されているｓｕｂ命令が検索され、第５番目にアドレス＝“１
０Ａｈ”に格納されているｊｚ命令が検索され、第６番目にアドレス＝“１１０ｈ”に格
納されているｏｒ命令が検索される。
【００３２】
これらの検索された命令のうち、不使用ビットの中で最も下位ビット側に位置するのは
、第６ビット目であるので、命令コードが検索された順番で第６ビットから順番に透かし
情報データを構成するビット列を埋め込むこととなり、アドレス＝“１００ｈ”に格納さ
れているａｎｄ命令を構成する不使用ビットの第６ビットに対し、透かし情報データビッ
ト列のうち、「Ａ」の１ビット分が埋め込まれることとなる。
つづいて、第２番目に検索されたアドレス＝“１０２ｈ”に格納されているａｄｄ命令
を構成する不使用ビットの第６ビットに透かし情報データビット列のうち、「Ｂ」の１ビ
ット分を埋め込むこととなる。
【００３３】
同様に、アドレス＝“１０６ｈ”に格納されているｘｏｒ命令を構成する不使用ビット
の第６ビットに透かし情報データビット列のうち「Ｃ」の１ビット分が埋め込まれ、アド
レス＝“１０８ｈ”に格納されているｓｕｂ命令を構成する不使用ビットの第６ビットに
透かし情報データビット列のうち「Ｄ」の１ビット分が埋め込まれ、アドレス＝“１１０
ｈ”に格納されているｏｒ命令を構成する不使用ビットの第６ビットに透かし情報データ
ビット列のうち「Ｅ」の１ビット分が埋め込まれる。これにより検索された命令に含まれ
る第６ビット目に位置する不使用ビットは全て透かし情報データビット列を構成するビッ
トが埋め込まれたので、次に第７ビット目に不使用ビットが存在する命令を検索し、アド
レス＝“１００ｈ”に格納されているａｎｄ命令を構成する不使用ビットの第７ビットに
対し、透かし情報データビット列のうち、「Ｆ」の１ビット分が埋め込まれることとなる
。
以下、同様にして検索された命令のうち、第７ビット目に不使用ビットを有する命令の
第７ビット目に検索順で透かし情報データビット列がそれぞれ埋め込まれ、つづいて第８
ビット目→第９ビット目→第１０ビット目の順番で、検索された命令順に１ビットずつ、
透かし情報データビット列を構成するビットが順次埋め込まれ、最終的には、図９に示す
ような状態で処理が完了する。
【００３４】
図１０は、第３具体例の透かし情報データのビット列の埋込状態の説明図である。
第３具体例は、上述した（Ａ３）の手順で命令コードおよび不使用ビットを検索し、上
述した（Ｂ１）の手順に従ってＬＳＢ側から命令コード中の不使用ビットに透かし情報デ
ータのビット列を埋め込んだ場合のものである。
この場合には、プログラムに予め定めた特定のデータを予め定めた特定の順番で入力し
て処理を行わせた場合に、不使用ビットを有する命令であって、第１番目に実行される命
令は、アドレス＝“１００ｈ”に格納されているａｎｄ命令であるので、このａｎｄ命令
が第１番目に検索され、ａｎｄ命令を構成する不使用ビットの第６ビットから第１０ビッ
トに対し、第６ビットから第１０ビットに向かう順番で透かし情報データビット列のうち
、「Ａ」〜「Ｅ」の５ビット分を順次埋め込むこととなる。
【００３５】
つづいて、不使用ビットを有する命令であって、第２番目に実行される命令は、アドレ
ス＝“１０２ｈ”に格納されているａｄｄ命令であるので、検索されて、このａｄｄ命令
を構成する不使用ビットの第６ビットから第１０ビットに対し、第６ビットから第１０ビ
ットに向かう順番で透かし情報データビット列のうち、「Ｆ」〜「Ｊ」の５ビット分を順
次埋め込むこととなる。
同様に、不使用ビットを有する命令であって、第３番目に実行される命令は、アドレス
＝“１０６ｈ”に格納されているｘｏｒ命令であるので、このｘｏｒ命令を構成する不使
用ビットの第６ビットから第１０ビットに対し、透かし情報データビット列のうち、「Ｋ
」〜「Ｏ」の５ビット分が順次埋め込まれる。
【００３６】
さらに不使用ビットを有する命令であって、第４番目に実行される命令は、アドレス＝
“１０８ｈ”に格納されているｓｕｂ命令であるので、このｓｕｂ命令を構成する不使用
ビットの第６ビットから第１０ビットに対し、透かし情報データビット列のうち、「Ｐ」
〜「Ｔ」の５ビット分が順次埋め込まれる。
このとき、ｓｕｂ命令の演算結果が０となり、図示しないゼロフラグがセットされたも
のとする。
そして、不使用ビットを有する命令であって、第５番目に実行される命令は、アドレス
＝“１０Ａｈ”に格納されているｊｚ命令であるので、このｊｚ命令を構成する不使用ビ
ットの第１０ビットに対し、透かし情報データビット列のうち、「Ｕ」の１ビット分が埋
め込まれる。
【００３７】
そして、第４番目に実行されたアドレス＝“１０８ｈ”に格納されているｓｕｂ命令の
演算結果により、図示しないゼロフラグがセットされているので、ｊｚ命令の実行の結果
、処理がメインルーチンＳＴＡＲＴからアドレス＝“１１４ｈ”に格納されたサブルーチ
ンＬＡＢＥＬに分岐されることとなる。
この結果、第６番目に実行される命令は、アドレス＝“１１４ｈ”に格納されているｊ
ｍｐ命令であるので、このｊｍｐ命令を構成する不使用ビットの第１０ビットに対し、透
かし情報データビット列のうち、「Ｖ」の１ビット分が埋め込まれる。
本例によれば、プログラムにどのような特定のデータを予め定めたどのような特定の順
番で入力するかがわからなければ、透かし情報を解析することはできず、改竄が非常に困
難となる。一方、プログラムの改竄が行われた場合には、透かし情報を所定の手順で検出
して容易に改竄が行われた旨を特定することが可能となる。
【００３８】
以上の説明のように、本実施形態によれば、プログラムの動作に影響を与えず、かつ、
透かし情報の埋め込み対象のプログラムのサイズも変更せずに透かし情報を埋め込むこと
ができるので、仮に第三者がプログラムの複製を行うに際し、プログラムの出所を誤魔化
すために、透かし情報の除去あるいは透かし情報の改竄を試みた場合に、従来よりも解析
が困難となり、ひいては、透かし情報の除去あるいは改竄が困難となり、プログラムの複
製を牽制することが可能となる。
さらに同一の透かし情報であっても、様々な埋込態様が可能となるため、プログラムの
配布ルートあるいは販売ルート等の流通ルート毎に透かし情報の埋込態様を変更すること
により、複製がなされたプログラムの流通ルートをより容易に特定することが可能となる
。
【図面の簡単な説明】
【００３９】
【図１】実施形態の情報処理装置の概要構成ブロック図である。
【図２】１６ビット長の命令を有するプロセッサの命令セットの例を説明する図である。
【図３】透かし情報埋込処理の機能説明図である。
【図４】透かし情報埋込処理の処理フローチャートである。
【図５】プログラムのソースコードの一例の説明図である。
【図６】図５に示したプログラムのメインルーチンであるＳＴＡＲＴルーチンをコンパイルした場合の、バイナリコードのビット配列を説明するための図である。
【図７】透かし情報データのビット列の説明図である。
【図８】第１具体例の透かし情報データのビット列の埋込状態の説明図である。
【図９】第２具体例の透かし情報データのビット列の埋込状態の説明図である。
【図１０】第３具体例の透かし情報データのビット列の埋込状態の説明図である。
【符号の説明】
【００４０】
１０…情報処理装置、１１…情報処理装置本体、１２…表示装置、１３…操作部、１４
…外部記憶装置、１５…外部記憶媒体、１６…媒体リード／ライト装置、２１…ＭＰＵ、
２２…ＲＯＭ、２３…ＲＡＭ、２４…バス。
【図１】
2009169492.tif 000003
【図２】
2009169492.tif 000004
【図３】
2009169492.tif 000005
【図４】
2009169492.tif 000006
【図５】
2009169492.tif 000007
【図６】
2009169492.tif 000008
【図７】
2009169492.tif 000009
【図８】
2009169492.tif 000010
【図９】
2009169492.tif 000011
【図１０】
2009169492.tif 000012