説明

情報処理装置、情報処理装置の制御方法、制御プログラム及び記録媒体

【課題】電子的な透かし情報の埋込場所の解析が困難であり、ひいては、透かし情報の改
竄が困難となるプログラムを提供する。
【解決手段】プログラムを構成する各命令コードの不使用ビットに透かし情報データを構
成するビットを書き込むことによりプログラムに透かし情報を埋め込む。

【発明の詳細な説明】
【技術分野】
【0001】
情報処理装置、情報処理装置の制御方法、制御プログラム及び記録媒体に係り、特に電
子機器の出所などを特定するための透かし情報を埋め込むための技術に関する。
【背景技術】
【0002】
従来、プログラム制作者とは別個のプログラム販売者が、販売対象のプログラムに自己
の電子署名を自由に追加して、当該販売対象のプログラムの出所を明らかにするに際し、
動作に影響を与えないダミーモジュールをプログラムに追加し、当該ダミーモジュール内
に電子署名を電子透かしとして埋め込むものが提案されている(例えば、特許文献1参照
)。
【特許文献1】特開2005−100347号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
上記従来の手法によれば、プログラムに追加されたダミーモジュール内に電子署名を埋
め込む構成を採っているため、プログラムコードを解析して、実際の動作に影響を与えな
い領域を特定することにより、電子署名の埋め込まれている領域を容易に特定される可能
性があり、電子署名を容易に改竄されるおそれがあった。
そこで、本発明の目的は、電子的な透かし情報の埋込場所の解析が困難であり、ひいて
は、透かし情報の改竄が困難となるプログラムを提供することが可能な情報処理装置、情
報処理装置の制御方法及び制御プログラムならびに透かし情報を埋め込んだプログラムが
記録された記録媒体を提供することにある。
【課題を解決するための手段】
【0004】
上記課題を解決するため、本発明の第1態様は、プログラムを構成する各命令コードの
不使用ビットに透かし情報データを構成するビットを書き込むことにより前記プログラム
に透かし情報を埋め込むことを特徴としている。
上記構成によれば、透かし情報データを構成するビットは、プログラムを構成する各命
令コードの不使用ビットに書き込まれているので、プログラムの実行時には、無視され、
その動作に影響を与えることがない。
また、透かし情報データを構成するビットの書き込みにより、プログラムのサイズが元
のプログラムに対して変化することもない。
これらの結果、透かし情報の解析が困難となり、透かし情報の改竄、除去などを抑制す
ることができる。
【0005】
また、本発明の第2の態様は、第1の態様において、前記プログラムを構成する命令コ
ードのうち、特定の種類の前記命令コードの不使用ビット位置を検出する不使用ビット位
置検出部と、前記不使用ビット位置検出部により検出された不使用ビット位置に前記透か
し情報データを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部
と、を備えたことを特徴としている。
上記構成によれば、不使用ビット位置検出部は、前記プログラムを構成する命令コード
のうち、特定の種類の前記命令コードの不使用ビット位置を検出し、透かし情報埋込部は
、不使用ビット位置検出部により検出された不使用ビット位置に前記透かし情報データを
構成するビットを書き込んで前記プログラムに埋め込むので、プログラム中で透かし情報
データを構成するビットが分散して埋め込まれるので、より透かし情報の解析が困難とな
る。
【0006】
また、本発明の第3の態様は、第1の態様において、前記プログラムを構成する命令コ
ードを、当該プログラムにおける命令コードの配置順に順次検索し、少なくとも前記透か
し情報データを構成する全てのビットの書込に必要なビット数の不使用ビット位置を検出
する不使用ビット位置検出部と、前記不使用ビット位置検出部により検出された不使用ビ
ット位置に前記透かし情報データを構成するビットを書き込んで前記プログラムに埋め込
む透かし情報埋込部と、を備えたことを特徴としている。
上記構成によれば、不使用ビット位置検出部は、前記プログラムを構成する命令コード
を、当該プログラムにおける命令コードの配置順に順次検索し、少なくとも前記透かし情
報データを構成する全てのビットの書込に必要なビット数の不使用ビット位置を検出し、
透かし情報埋込部は、不使用ビット位置検出部により検出された不使用ビット位置に前記
透かし情報データを構成するビットを書き込んで前記プログラムに埋め込むので、プログ
ラム中で透かし情報データを構成するビットが分散して埋め込まれるので、より透かし情
報の解析が困難となる。
【0007】
また、本発明の第4の態様は、第1の態様において、前記プログラムを構成する命令コ
ードを、所定の条件下で前記プログラムを実行した場合の前記命令コードの実行順に順次
検索し、少なくとも前記透かし情報データを構成する全てのビットの書込に必要なビット
数の不使用ビット位置を検出する不使用ビット位置検出部と、前記不使用ビット位置検出
部により検出された不使用ビットに前記透かし情報データを構成するビットを書き込んで
前記プログラムに埋め込む透かし情報埋込部と、を備えたことを特徴としている。
上記構成によれば、不使用ビット位置検出部は、前記プログラムを構成する命令コード
を、所定の条件下で前記プログラムを実行した場合の前記命令コードの実行順に順次検索
し、少なくとも前記透かし情報データを構成する全てのビットの書込に必要なビット数の
不使用ビット位置を検出し、透かし情報埋込部は、不使用ビット位置検出部により検出さ
れた不使用ビットに前記透かし情報データを構成するビットを書き込んで前記プログラム
に埋め込むので、同一のプログラムであっても、所定の条件を変更することで様々な態様
で透かし情報を埋め込むことが可能となる。
【0008】
本発明の第5の態様は、第4の態様において、前記所定の条件は、特定の順番で特定の
データを入力する、ことであることを特徴としている。
上記構成によれば、容易に所定の条件を変更することができ、より容易に様々な態様で
透かし情報を埋め込むことができ、透かし情報の解析を困難とすることができる。
【0009】
本発明の第6の態様は、第3ないし第5の態様において、検索された命令コードに含ま
れる全ての不使用ビットあるいは所定数の不使用ビットに前記透かし情報データを構成す
るビットを書き込むことを特徴としている。
上記構成によれば、様々な態様で透かし情報を埋め込むことができ、透かし情報の解析
を困難とすることができる。
【0010】
本発明の第7の態様は、第1の態様ないし第6の態様のいずれかにおいて、前記透かし
情報データの埋込が少なくとも1回なされた状態で、未だ存在する不使用ビットに対し、
繰り返し前記透かし情報データを構成するビットの書き込みを行い、あるいは、ランダム
データの書き込みを行うことを特徴としている。
上記構成によれば、透かし情報の位置をより特定しにくくし、透かし情報の解析を困難
とすることができる。
【0011】
また、本発明の第8の態様は、情報処理装置の制御方法において、プログラムを構成す
る各命令コードの不使用ビット位置を検出する不使用ビット位置検出過程と、前記不使用
ビット位置検出過程において検出された不使用ビット位置に前記透かし情報データを構成
するビットを書き込んで前記プログラムに埋め込む透かし情報埋込過程と、を備えたこと
を特徴としている。
上記構成によれば、透かし情報データを構成するビットは、プログラムを構成する各命
令コードの不使用ビットに書き込まれているので、プログラムの実行時には、無視され、
その動作に影響を与えることがなく、透かし情報データを構成するビットの書き込みによ
り、プログラムのサイズが元のプログラムに対して変化することもないので、透かし情報
の解析が困難となり、透かし情報の改竄、除去などを抑制することができる。
【0012】
本発明の第9の態様は、プログラムに対して処理を行う情報処理装置をコンピュータに
より制御する制御プログラムにおいて、前記プログラムを構成する各命令コードの不使用
ビット位置を検出させ、前記検出された不使用ビット位置に前記透かし情報データを構成
するビットを書き込んで前記プログラムに埋め込ませる、ことを特徴としている。
上記構成によれば、透かし情報データを構成するビットは、プログラムを構成する各命
令コードの不使用ビットに書き込まれているので、プログラムの実行時には、無視され、
その動作に影響を与えることがなく、透かし情報データを構成するビットの書き込みによ
り、プログラムのサイズが元のプログラムに対して変化することもないので、透かし情報
の解析が困難となり、透かし情報の改竄、除去などを抑制することができる。
【0013】
本発明の第10の態様は、コンピュータ読み取り可能な記録媒体において、当該プログ
ラムを構成する命令コードの不使用ビットに透かし情報データを構成するビットが書き込
まれることにより透かし情報が埋め込まれたプログラムを記録しているので、プログラム
の実行時には、透かし情報は、無視され、その動作に影響を与えることがなく、透かし情
報データを構成するビットの書き込みにより、プログラムのサイズが元のプログラムに対
して変化することもないので、透かし情報の解析が困難となり、透かし情報の改竄、除去
などを抑制することができる。
【発明を実施するための最良の形態】
【0014】
次に図面を参照して本発明の好適な実施の形態について説明する。
図1は、実施形態の情報処理装置の概要構成ブロック図である。
情報処理装置10は、大別すると、各種情報処理を行う情報処理装置本体11と、各種
情報を表示する表示装置12と、ユーザが各種操作を行うキーボード、マウスなどの操作
部13と、透かし情報を生成するための埋込対象情報およびプログラムのソースコード及
びバイナリコードを格納する外部記憶装置14と、外部記憶媒体15に透かし情報を埋め
込んだプログラムを書き込むことが可能な媒体リード/ライト装置16と、を備えている

ここで、外部記憶媒体15としては、PROMなどの半導体メモリ、半導体メモリカー
ド、光ディスク、磁気ディスクなどが挙げられる。
情報処理装置本体11は、コンピュータとして構成されており、各種処理を行うMPU
21と、制御プログラムを含む各種データを記憶するROM22と、各種データを一時的
に記憶するRAM23と、を備え、各部は、バス24を介して接続されている。
【0015】
ここで、具体的な説明に先立ち、本発明の原理について説明する。
通常、MPU21などのプロセッサにおいては、処理の簡略化のため、固定ビット長で
命令(=命令コード+オペランド)を定義している。このため命令の種類によっては、当
該命令の動作に影響を与えない、すなわち、機能、役割を与えられていないビットが命令
の命令コード中に含まれる。これらのビットは、各命令の実行において用いられることは
ないため、以下においては、不使用ビットという。不使用ビットのビット数は、命令によ
り異なり、1ビット〜複数ビットがある。
【0016】
図2は、16ビット長の命令を有するプロセッサの命令セットの例を説明する図である

上述したように、各命令は、命令コードを含んでおり、さらに必要に応じて、オペラン
ドを含んでいる。例えば、and命令は、16ビット中、第6ビット〜第15ビット(M
SB)が命令コードであり、第0ビット〜第5ビットは、オペランドである。また、jm
p命令は、16ビット中、第10ビット〜第15ビット(MSB)が命令コードであり、
第0ビット〜第9ビットは、オペランドである。また、nop命令は、オペランドが存在
せず、16ビット全部が命令コードである。
図2に示すように、命令のうち、li命令(即値ロード命令)、ld命令(データロー
ド命令)、st命令(データストア命令)については、不使用ビットが存在していない。
これに対し、add命令(加算命令)、sub命令(減算命令)、and命令(論理積
命令)、or命令(論理和命令)およびxor命令(排他的論理和命令)については、図
2に斜線部分で示すように、第6ビットから第10ビットの5ビットの不使用ビットが存
在している。
【0017】
また、jmp命令(ジャンプ命令)及びjz命令(零時ジャンプ命令)については、図
2に斜線部分で示すように、第10ビットの1ビットの不使用ビットが存在している。
また、nop命令(ノーオペレーション命令)については、図2に斜線部分で示すよう
に、第0ビットから第10ビットの11ビットの不使用ビットが存在している。
これらの不使用ビットは、その値を書き換えたとしても命令の実行に何ら影響を与えな
い。
そこで、本実施形態においては、これらの不使用ビットの少なくとも一部に透かし情報
データを構成するビットを書き込むことにより、元のプログラムのサイズ、動作に影響を
与えることなく、透かし情報を埋め込むことが可能となっている。
【0018】
図3は、透かし情報埋込処理の機能説明図である。
また、図4は透かし情報埋込処理の処理フローチャートである。
まず、プログラムのソースを読み込み(ステップS1)、コンパイルしてバイナリコー
ドとする(ステップS2)。
一方、透かし情報としての認証情報を読み込み(ステップS3)、透かし情報データに
変換する(ステップS4)。なお、透かし情報としては、認証情報に限らず、所望の情報
をデータ化したものであればよい。
つづいて、プログラムのバイナリコードに含まれる命令コード及び対応する不使用ビッ
トの位置を検索する(ステップS5)。
この場合において、命令コード及び不使用ビットの位置の検索の手順としては、以下の
(A1)〜(A3)のようなものが考えられる。
【0019】
(A1) プログラムの格納アドレスにしたがって、命令コード及び当該命令コードに
おける不使用ビット位置を検索する。
例えば、アドレスの先頭から最後尾に向かって順に命令コードを検索し、各命令コード
を構成する不使用ビットもアドレスの先頭から最後尾に向かって順に検索する。
【0020】
(A2) プログラムの格納アドレスにしたがって、所定の種類の命令コード及び当該
命令コードにおける不使用ビット位置を検索する。
例えば、所定の種類の命令コードとして、add命令およびsub命令を検索対象とす
る場合、アドレスの先頭から最後尾に向かって順にadd命令およびsub命令の命令コ
ードを検索し、各命令コードを構成する不使用ビットもアドレスの先頭から最後尾に向か
って順に検索する。
【0021】
(A3) プログラムに予め定めた特定のデータを予め定めた特定の順番で入力して処
理を行わせたと仮定した場合の処理実行順に命令コード及び当該命令コードにおける不使
用ビット位置を検索する。
例えば、入力データとして“0”を入力し続けた場合にプログラムが実行される順番で
命令コードをを検索し、各命令コードを構成する不使用ビットについてはアドレスの先頭
から最後尾に向かって順に検索する。
【0022】
つづいてMPUは、検索された不使用ビットに透かし情報データを構成するビット列を
順に埋め込む(ステップS6)。
この場合において、透かし情報データを構成するビット列を埋め込む手順としては、以
下の(B1)〜(B3)のようなものが考えられる。
【0023】
(B1) 検索された各命令コードを構成する不使用ビットのうち、LSB側(第0ビ
ット側)からMSB側に向かって、あるいは、MSB側からLSB側に向かって順に透か
し情報データを構成するビット列を埋め込む。
例えば、各命令が16ビット長の固定ビット長で形成されている場合に、第6ビットか
ら第10ビットが不使用ビットである場合に、LSB側から埋め込む場合、第6ビットか
ら第10ビットに向かってビット列を順に埋め込むこととなる。
【0024】
(B2) 少なくとも透かし情報データを構成するビット列を埋め込むのに十分な数の
不使用ビットが検索された時点で、検索された不使用ビットを含む命令コードについて、
命令コードが検索された順番で下位ビット側あるいは上位ビット側から順番に透かし情報
データを構成するビット列を埋め込む。
例えば、add命令→sub命令→nop命令が順番に検索された場合、上述の例の場
合、add命令およびsub命令については、第6ビットから第10ビットの5ビットの
不使用ビットが存在し、nop命令については、第0ビットから第10ビットの11ビッ
トの不使用ビットが存在しているので、下位ビット側から順番に透かし情報データを構成
するビット列を埋め込む場合には、nop命令の第0ビット→nop命令の第1ビット→
…→nop命令の第4ビット→nop命令の第5ビット→add命令の第6ビット→su
b命令の第6ビット→nop命令の第6ビット→add命令の第7ビット→sub命令の
第7ビット→nop命令の第7ビット→…→add命令の第10ビット→sub命令の第
10ビット→nop命令の第10ビットの順番でビット列を順に埋め込むこととなる。
【0025】
(B3) 検索された各命令コードを構成する不使用ビットのうち、所定の位置の所定
数のビットに順に透かし情報データを構成するビット列を埋め込む。
例えば、検索された各命令コードの不使用ビットのうち、それぞれ最上位ビット(上述
のadd命令の場合、第10ビット)に1ビットの透かし情報データを構成するビットを
埋め込む。
(B4) 上記(B1)〜(B3)の手順において、残りの不使用ビットには、透かし
情報データを構成するビット列を繰り返し埋め込んだり、任意のデータをランダムに書き
込んだりするように構成してもよい。
【0026】
これらの結果、透かし情報を埋め込んだバイナリコードのプログラムが生成されるので
、これを各種電子機器のファームウェアとして、ROMあるいはEEPROMなどの書き
換え可能な不揮発性メモリに書き込んで、電子機器に組み込むこととなる(ステップS7
)。
そして、図3に示すように、その後、複製されたことが疑われるROMあるいはEEP
ROMなどの書き換え可能な不揮発性メモリが見いだされた場合には、透かし情報データ
を書き込んだのと同様の手順で、ROMあるいはEEPROMなどの書き換え可能な不揮
発性メモリから透かし情報データを抽出して、読み出し(ステップS11)、書き込んだ
透かし情報と照合し(ステップS12)、書き込んだ透かし情報と同一の透かし情報ある
いは同一の透かし情報と特定可能な程度の透かし情報の一部が読み出された場合には複製
がなされたと容易に判別することが可能となる。
この結果、不法な複製がなされることを抑止できると共に、不法な複製がなされた場合
に対処することが可能となる。
【0027】
ここで、具体的な透かし情報の埋込処理の具体例について説明する。
図5は、プログラムのソースコードの一例の説明図である。
図5に示すプログラムにおいて、途中には条件分岐命令として、演算結果が0であった
場合にラベルLABELに分岐させるjz命令が記載されている。
図6は、図5に示したプログラムのメインルーチンであるSTARTルーチンをコンパ
イルした場合の、バイナリコードのビット配列を説明するための図である。
図6中、ハッチングで示した部分は、命令コード中の不使用ビット位置を表しており、
図6の場合、全部で27ビットの不使用ビットが含まれている。
【0028】
図7は、透かし情報データのビット列の説明図である。
図7においては、透かし情報データのビット列は、26ビットで構成されており、理解
を容易にするため各ビットをアルファベット「A」〜「Z」で表記している。すなわち、
「A」〜「Z」は、それぞれ1ビットであり、その値は“0”または“1”である。
【0029】
図8は、第1具体例の透かし情報データのビット列の埋込状態の説明図である。
第1具体例は、上述した(A1)の手順で命令コードおよび不使用ビットを検索し、上
述した(B1)の手順に従ってLSB側から命令コード中の不使用ビットに透かし情報デ
ータのビット列を埋め込んだ場合のものである。
この場合には、第1番目にアドレス=“100h”(hは16進数を表す。以下同じ。
)に格納されているand命令が検索され、and命令を構成する不使用ビットの第6ビ
ットから第10ビットに対し、第6ビットから第10ビットに向かう順番で透かし情報デ
ータビット列のうち、「A」〜「E」の5ビット分を順次埋め込むこととなる。
つづいて、第2番目にアドレス=“102h”に格納されているadd命令が検索され
、add命令を構成する不使用ビットの第6ビットから第10ビットに対し、第6ビット
から第10ビットに向かう順番で透かし情報データビット列のうち、「F」〜「J」の5
ビット分を順次埋め込むこととなる。
【0030】
同様に、アドレス=“106h”に格納されているxor命令を構成する不使用ビット
の第6ビットから第10ビットに対し、透かし情報データビット列のうち、「K」〜「O
」の5ビット分が順次埋め込まれ、アドレス=“108h”に格納されているsub命令
を構成する不使用ビットの第6ビットから第10ビットに対し、透かし情報データビット
列のうち、「P」〜「T」の5ビット分が順次埋め込まれ、アドレス=“10Ah”に格
納されているjz命令を構成する不使用ビットの第10ビットに対し、透かし情報データ
ビット列のうち、「U」の1ビット分が埋め込まれ、アドレス=“110h”に格納され
ているor命令を構成する不使用ビットの第6ビットから第10ビットに対し、透かし情
報データビット列のうち、「V」〜「Z」の5ビット分が順次埋め込まれることとなる。
【0031】
図9は、第2具体例の透かし情報データのビット列の埋込状態の説明図である。
第2具体例は、上述した(A1)の手順で命令コードおよび不使用ビットを検索し、上
述した(B2)の手順に従って下位ビット側から命令コード中の不使用ビットに透かし情
報データのビット列を埋め込んだ場合のものである。
この場合には、第1番目にアドレス=“100h”に格納されているand命令が検索
され、第2番目にアドレス=“102h”に格納されているadd命令が検索され、第3
番目にアドレス=“106h”に格納されているxor命令が検索され、第4番目にアド
レス=“108h”に格納されているsub命令が検索され、第5番目にアドレス=“1
0Ah”に格納されているjz命令が検索され、第6番目にアドレス=“110h”に格
納されているor命令が検索される。
【0032】
これらの検索された命令のうち、不使用ビットの中で最も下位ビット側に位置するのは
、第6ビット目であるので、命令コードが検索された順番で第6ビットから順番に透かし
情報データを構成するビット列を埋め込むこととなり、アドレス=“100h”に格納さ
れているand命令を構成する不使用ビットの第6ビットに対し、透かし情報データビッ
ト列のうち、「A」の1ビット分が埋め込まれることとなる。
つづいて、第2番目に検索されたアドレス=“102h”に格納されているadd命令
を構成する不使用ビットの第6ビットに透かし情報データビット列のうち、「B」の1ビ
ット分を埋め込むこととなる。
【0033】
同様に、アドレス=“106h”に格納されているxor命令を構成する不使用ビット
の第6ビットに透かし情報データビット列のうち「C」の1ビット分が埋め込まれ、アド
レス=“108h”に格納されているsub命令を構成する不使用ビットの第6ビットに
透かし情報データビット列のうち「D」の1ビット分が埋め込まれ、アドレス=“110
h”に格納されているor命令を構成する不使用ビットの第6ビットに透かし情報データ
ビット列のうち「E」の1ビット分が埋め込まれる。これにより検索された命令に含まれ
る第6ビット目に位置する不使用ビットは全て透かし情報データビット列を構成するビッ
トが埋め込まれたので、次に第7ビット目に不使用ビットが存在する命令を検索し、アド
レス=“100h”に格納されているand命令を構成する不使用ビットの第7ビットに
対し、透かし情報データビット列のうち、「F」の1ビット分が埋め込まれることとなる

以下、同様にして検索された命令のうち、第7ビット目に不使用ビットを有する命令の
第7ビット目に検索順で透かし情報データビット列がそれぞれ埋め込まれ、つづいて第8
ビット目→第9ビット目→第10ビット目の順番で、検索された命令順に1ビットずつ、
透かし情報データビット列を構成するビットが順次埋め込まれ、最終的には、図9に示す
ような状態で処理が完了する。
【0034】
図10は、第3具体例の透かし情報データのビット列の埋込状態の説明図である。
第3具体例は、上述した(A3)の手順で命令コードおよび不使用ビットを検索し、上
述した(B1)の手順に従ってLSB側から命令コード中の不使用ビットに透かし情報デ
ータのビット列を埋め込んだ場合のものである。
この場合には、プログラムに予め定めた特定のデータを予め定めた特定の順番で入力し
て処理を行わせた場合に、不使用ビットを有する命令であって、第1番目に実行される命
令は、アドレス=“100h”に格納されているand命令であるので、このand命令
が第1番目に検索され、and命令を構成する不使用ビットの第6ビットから第10ビッ
トに対し、第6ビットから第10ビットに向かう順番で透かし情報データビット列のうち
、「A」〜「E」の5ビット分を順次埋め込むこととなる。
【0035】
つづいて、不使用ビットを有する命令であって、第2番目に実行される命令は、アドレ
ス=“102h”に格納されているadd命令であるので、検索されて、このadd命令
を構成する不使用ビットの第6ビットから第10ビットに対し、第6ビットから第10ビ
ットに向かう順番で透かし情報データビット列のうち、「F」〜「J」の5ビット分を順
次埋め込むこととなる。
同様に、不使用ビットを有する命令であって、第3番目に実行される命令は、アドレス
=“106h”に格納されているxor命令であるので、このxor命令を構成する不使
用ビットの第6ビットから第10ビットに対し、透かし情報データビット列のうち、「K
」〜「O」の5ビット分が順次埋め込まれる。
【0036】
さらに不使用ビットを有する命令であって、第4番目に実行される命令は、アドレス=
“108h”に格納されているsub命令であるので、このsub命令を構成する不使用
ビットの第6ビットから第10ビットに対し、透かし情報データビット列のうち、「P」
〜「T」の5ビット分が順次埋め込まれる。
このとき、sub命令の演算結果が0となり、図示しないゼロフラグがセットされたも
のとする。
そして、不使用ビットを有する命令であって、第5番目に実行される命令は、アドレス
=“10Ah”に格納されているjz命令であるので、このjz命令を構成する不使用ビ
ットの第10ビットに対し、透かし情報データビット列のうち、「U」の1ビット分が埋
め込まれる。
【0037】
そして、第4番目に実行されたアドレス=“108h”に格納されているsub命令の
演算結果により、図示しないゼロフラグがセットされているので、jz命令の実行の結果
、処理がメインルーチンSTARTからアドレス=“114h”に格納されたサブルーチ
ンLABELに分岐されることとなる。
この結果、第6番目に実行される命令は、アドレス=“114h”に格納されているj
mp命令であるので、このjmp命令を構成する不使用ビットの第10ビットに対し、透
かし情報データビット列のうち、「V」の1ビット分が埋め込まれる。
本例によれば、プログラムにどのような特定のデータを予め定めたどのような特定の順
番で入力するかがわからなければ、透かし情報を解析することはできず、改竄が非常に困
難となる。一方、プログラムの改竄が行われた場合には、透かし情報を所定の手順で検出
して容易に改竄が行われた旨を特定することが可能となる。
【0038】
以上の説明のように、本実施形態によれば、プログラムの動作に影響を与えず、かつ、
透かし情報の埋め込み対象のプログラムのサイズも変更せずに透かし情報を埋め込むこと
ができるので、仮に第三者がプログラムの複製を行うに際し、プログラムの出所を誤魔化
すために、透かし情報の除去あるいは透かし情報の改竄を試みた場合に、従来よりも解析
が困難となり、ひいては、透かし情報の除去あるいは改竄が困難となり、プログラムの複
製を牽制することが可能となる。
さらに同一の透かし情報であっても、様々な埋込態様が可能となるため、プログラムの
配布ルートあるいは販売ルート等の流通ルート毎に透かし情報の埋込態様を変更すること
により、複製がなされたプログラムの流通ルートをより容易に特定することが可能となる

【図面の簡単な説明】
【0039】
【図1】実施形態の情報処理装置の概要構成ブロック図である。
【図2】16ビット長の命令を有するプロセッサの命令セットの例を説明する図である。
【図3】透かし情報埋込処理の機能説明図である。
【図4】透かし情報埋込処理の処理フローチャートである。
【図5】プログラムのソースコードの一例の説明図である。
【図6】図5に示したプログラムのメインルーチンであるSTARTルーチンをコンパイルした場合の、バイナリコードのビット配列を説明するための図である。
【図7】透かし情報データのビット列の説明図である。
【図8】第1具体例の透かし情報データのビット列の埋込状態の説明図である。
【図9】第2具体例の透かし情報データのビット列の埋込状態の説明図である。
【図10】第3具体例の透かし情報データのビット列の埋込状態の説明図である。
【符号の説明】
【0040】
10…情報処理装置、11…情報処理装置本体、12…表示装置、13…操作部、14
…外部記憶装置、15…外部記憶媒体、16…媒体リード/ライト装置、21…MPU、
22…ROM、23…RAM、24…バス。

【特許請求の範囲】
【請求項1】
プログラムを構成する各命令コードの不使用ビットに透かし情報データを構成するビッ
トを書き込むことにより前記プログラムに透かし情報を埋め込むことを特徴とする情報処
理装置。
【請求項2】
請求項1記載の情報処理装置において、
前記プログラムを構成する命令コードのうち、特定の種類の前記命令コードの不使用ビ
ット位置を検出する不使用ビット位置検出部と、
前記不使用ビット位置検出部により検出された不使用ビット位置に前記透かし情報デー
タを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部と、
を備えたことを特徴とする情報処理装置。
【請求項3】
請求項1記載の情報処理装置において、
前記プログラムを構成する命令コードを、当該プログラムにおける命令コードの配置順
に順次検索し、少なくとも前記透かし情報データを構成する全てのビットの書込に必要な
ビット数の不使用ビット位置を検出する不使用ビット位置検出部と、
前記不使用ビット位置検出部により検出された不使用ビット位置に前記透かし情報デー
タを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部と、
を備えたことを特徴とする情報処理装置。
【請求項4】
請求項1記載の情報処理装置において、
前記プログラムを構成する命令コードを、所定の条件下で前記プログラムを実行した場
合の前記命令コードの実行順に順次検索し、少なくとも前記透かし情報データを構成する
全てのビットの書込に必要なビット数の不使用ビット位置を検出する不使用ビット位置検
出部と、
前記不使用ビット位置検出部により検出された不使用ビットに前記透かし情報データを
構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込部と、
を備えたことを特徴とする情報処理装置。
【請求項5】
請求項4記載の情報処理装置において、
前記所定の条件は、特定の順番で特定のデータを入力する、ことであることを特徴とす
る情報処理装置。
【請求項6】
請求項3ないし請求項5のいずれかに記載の情報処理装置において、
検索された命令コードに含まれる全ての不使用ビットあるいは所定数の不使用ビットに
前記透かし情報データを構成するビットを書き込むことを特徴とする情報処理装置。
【請求項7】
請求項1ないし請求項6のいずれかに記載の情報処理装置において、
前記透かし情報データの埋込が少なくとも1回なされた状態で、未だ存在する不使用ビ
ットに対し、繰り返し前記透かし情報データを構成するビットの書き込みを行い、あるい
は、ランダムデータの書き込みを行うことを特徴とする情報処理装置。
【請求項8】
プログラムを構成する各命令コードの不使用ビット位置を検出する不使用ビット位置検
出過程と、
前記不使用ビット位置検出過程において検出された不使用ビット位置に前記透かし情報
データを構成するビットを書き込んで前記プログラムに埋め込む透かし情報埋込過程と、
を備えたことを特徴とする情報処理装置の制御方法。
【請求項9】
プログラムに対して処理を行う情報処理装置をコンピュータにより制御する制御プログ
ラムにおいて、
前記プログラムを構成する各命令コードの不使用ビット位置を検出させ、
前記検出された不使用ビット位置に前記透かし情報データを構成するビットを書き込ん
で前記プログラムに埋め込ませる、
ことを特徴とする制御プログラム。
【請求項10】
当該プログラムを構成する命令コードの不使用ビットに透かし情報データを構成するビ
ットが書き込まれることにより透かし情報が埋め込まれたプログラムを記録したことを特
徴とするコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2009−169492(P2009−169492A)
【公開日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願番号】特願2008−4047(P2008−4047)
【出願日】平成20年1月11日(2008.1.11)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】