(57)【要約】【課題】電子的な透かし情報の埋込場所の解析が困難であり、ひいては、透かし情報の改竄が困難となる情報処理装置を提供する。【解決手段】プログラムを格納するための記憶回路（ランダムゲート回路１２）と、プログラムを実行する演算回路（ＣＰＵ１１）とを有する情報処理装置１０において、演算回路は、透かし情報を読み出すための読出情報の入力を受け、記憶回路は、論理素子の組み合わせ回路としてのランダムゲート回路として構成されるとともに、演算回路を介して読出情報が入力された場合には、透かし情報を有する情報を出力する。【選択図】図１
2009199114.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有す
る情報処理装置において、
前記演算回路は、透かし情報を読み出すための読出情報の入力を受け、
前記記憶回路は、論理素子の組み合わせ回路としてのランダムゲート回路として構成さ
れるとともに、前記演算回路を介して前記読出情報が入力された場合には、前記透かし情
報を有する情報を出力する、
ことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記記憶回路に格納されているプログラムを構成する命令は、不使用ビットに透かし情
報を有しており、
前記演算回路は、前記命令のうち、前記透かし情報を除く情報に基づいて演算処理を実
行する、
ことを特徴とする情報処理装置。
【請求項３】
請求項２記載の情報処理装置において、
前記命令は、条件分岐命令を含み、
前記透かし情報は、前記条件分岐命令の分岐に影響を与える所定の条件の下において、
前記演算回路によって実行される前記命令の順番に応じて格納されている、
ことを特徴とする情報処理装置。
【請求項４】
請求項３記載の情報処理装置において、
前記所定の条件は、前記条件分岐命令の分岐に影響を与える所定の入力が前記演算回路
に与えられていることであることを特徴とする情報処理装置。
【請求項５】
請求項２乃至４記載の情報処理装置において、
前記命令を構成する命令コードは、前記プログラム中における当該命令の出現頻度が高
いほど、短いコード長を有するように設定されていることを特徴とする情報処理装置。
【請求項６】
請求項１乃至４のいずれか１項に記載の情報処理装置において、
前記記憶回路は、格納しているビット情報に基づく論理圧縮が施されていることを特徴
とする情報処理装置。
【請求項７】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有す
る情報処理装置を設計する設計装置において、
透かし情報の入力を受ける入力手段と、
前記入力手段を介して入力された透かし情報を格納した前記記憶回路を、論理素子の組
み合わせ回路としてのランダムゲート回路として構成し、当該ランダムゲート回路の設計
情報を生成する生成手段と、
を有することを特徴とする設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
情報処理装置および設計装置に係り、特に電子機器の出所などを特定するための透かし
情報を埋め込むための技術に関する。
【背景技術】
【０００２】
従来、プログラム制作者とは別個のプログラム販売者が、販売対象のプログラムに自己
の電子署名を自由に追加して、当該販売対象のプログラムの出所を明らかにするに際し、
動作に影響を与えないダミーモジュールをプログラムに追加し、当該ダミーモジュール内
に電子署名を電子透かしとして埋め込むものが提案されている（例えば、特許文献１参照
）。
【特許文献１】特開２００５−１００３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記従来の手法によれば、プログラムに追加されたダミーモジュール内に電子署名を埋
め込む構成を採っているため、プログラムコードを解析して、実際の動作に影響を与えな
い領域を特定することにより、電子署名の埋め込まれている領域を容易に特定される可能
性があり、電子署名を容易に改竄されるおそれがあった。
そこで、本発明の目的は、電子的な透かし情報の埋込場所の解析が困難であり、ひいて
は、透かし情報の改竄が困難となるプログラムを有する情報処理装置および設計装置を提
供することにある。
【課題を解決するための手段】
【０００４】
上記課題を解決するため、本発明の第１態様は、プログラムを格納するための記憶回路
と、前記プログラムを実行する演算回路とを有する情報処理装置において、前記演算回路
は、透かし情報を読み出すための読出情報の入力を受け、前記記憶回路は、論理素子の組
み合わせ回路としてのランダムゲート回路として構成されるとともに、前記演算回路を介
して前記読出情報が入力された場合には、前記透かし情報を有する情報を出力する、こと
を特徴としている。
上記構成によれば、透かし情報は、論理素子の組み合わせ回路としてのランダムゲート
回路に保持される。このため、通常のＲＯＭに透かし情報を保持させた場合に比較して、
回路パターン上における透かし情報の位置を特定されることを防止できる。この結果、透
かし情報の解析が困難となり、透かし情報の改竄、除去などを抑制することができる。
【０００５】
また、本発明の第２の態様は、第１の態様において、前記記憶回路に格納されているプ
ログラムを構成する命令は、不使用ビットに透かし情報を有しており、前記演算回路は、
前記命令のうち、前記透かし情報を除く情報に基づいて演算処理を実行する、ことを特徴
としている。
上記構成によれば、透かし情報は、プログラムを構成する命令の不使用ビットに格納さ
れている。このため、回路規模を拡大することなく、透かし情報を格納することができる
。
【０００６】
また、本発明の第３の態様は、第１の態様において、前記命令は、条件分岐命令を含み
、前記透かし情報は、前記条件分岐命令の分岐に影響を与える所定の条件の下において、
前記演算回路によって実行される前記命令の順番に応じて格納されている、ことを特徴と
している。
上記構成によれば、透かし情報は、条件分岐命令に影響を与える所定の条件の下におい
て、演算回路によって読み出される命令の順番に応じて格納されている。このため、所定
の条件が分からなければ、透かし情報を取り出すことができないため、透かし情報の解析
が更に困難となり、透かし情報の改竄、除去を抑制することができる。
【０００７】
また、本発明の第４の態様は、第３の態様において、前記所定の条件は、前記条件分岐
命令の分岐に影響を与える所定の入力が前記演算回路に与えられていることであることを
特徴としている。
上記構成によれば、所定の条件は、条件分岐命令の分岐に影響を与える所定の入力とさ
れる。このため、演算回路に与える入力を、例えば、複数の入力の組み合わせとして設定
することにより、透かし情報の解析が更に困難となり、透かし情報の改竄、除去を抑制す
ることができる。
【０００８】
また、本発明の第５の態様は、第２乃至４の態様において、前記命令を構成する命令コ
ードは、前記プログラム中における当該命令の出現頻度が高いほど、短いコード長を有す
るように設定されていることを特徴としている。
上記構成によれば、命令を構成する命令コードは、プログラム中への出現頻度が高いほ
ど、短いコード長を有するように設定される。このため、ランダムゲート回路が保持する
命令の平均のコード長が短くなるため、情報処理装置の回路規模を縮小することができる
。
【０００９】
また、本発明の第６の態様は、第１乃至４の態様において、前記記憶回路は、格納して
いるビット情報に基づく論理圧縮が施されていることを特徴としている。
上記構成によれば、ランダムゲート回路には論理圧縮が施される。この構成によれば、
ランダムゲート回路の回路規模を縮小することができる。
【００１０】
また、本発明の第７の態様は、プログラムを格納するための記憶回路と、前記プログラ
ムを実行する演算回路とを有する情報処理装置を設計する設計装置において、透かし情報
の入力を受ける入力手段と、前記入力手段を介して入力された透かし情報を格納した前記
記憶回路を、論理素子の組み合わせ回路としてのランダムゲート回路として構成し、当該
ランダムゲート回路の設計情報を生成する生成手段と、を有することを特徴としている。
上記構成によれば、透かし情報の入力を入力手段が受け、生成手段が透かし情報を格納
した記憶回路を、論理素子の組み合わせ回路としてのランダムゲート回路として構成し、
当該ランダムゲート回路の設計情報を生成する。
このため、通常のＲＯＭに透かし情報を保持させた場合に比較して、回路パターン上に
おける透かし情報の位置を特定されることを防止できる回路情報を生成できる。この結果
、透かし情報の解析が困難となり、透かし情報の改竄、除去などを抑制することができる
。
【発明を実施するための最良の形態】
【００１１】
次に図面を参照して本発明の好適な実施の形態について説明する。
図１は、実施形態の情報処理装置の概要構成ブロック図である。
情報処理装置１０は、例えば、ワンチップのマイクロコンピュータとして構成され、図
１に示すように、ＣＰＵ（Central Processing Unit）１１（請求項中「演算回路」に対
応）、ランダムゲート回路１２（請求項中「ランダムゲート回路」に対応）、レジスタ群
１３、周辺回路１４、および、Ｉ／Ｏ（Input Output）回路１５を有している。ここで、
ＣＰＵ１１は、ランダムゲート回路１２に格納されているプログラムおよびデータに基づ
いて、各種情報処理を実行するとともに、装置の各部を制御する。ランダムゲート回路１
２は、論理素子の組み合わせによって構成され、入力の値によって、その時点における出
力が定まる論理回路をいう。すなわち、ランダムゲート回路１２は、通常のＲＯＭ（Read
Only Memory）のように、内部状態を記憶する機能を有し、入力と内部状態の双方により
、その出力が定まる順序回路ではなく、ある入力が与えられたときに、当該入力のみに依
存して定まる出力が与えられる回路である。したがって、ランダムゲート回路１２は、通
常のＲＯＭのように、マトリクス状に配置された記憶素子としてのセルを有しておらず、
論理素子の組み合わせによって構成される。
【００１２】
レジスタ群１３は、複数のレジスタによって構成され、ＣＰＵ１１によって実行される
プログラムおよびデータを一時的に格納するメモリとして機能する。周辺回路１４は、割
り込み回路、タイマ回路、ＤＭＡ（Direct Memory Access）回路を有している。割り込み
回路は、例えば、タイマ回路、ＤＭＡ回路、または、Ｉ／Ｏ回路１５を介して接続された
外部機器に起因する割り込みを発生し、ＣＰＵ１１に通知する。タイマ回路は、例えば、
日時情報を生成してＣＰＵ１１に供給する。ＤＭＡ回路は、ＣＰＵ１１を介さずに、レジ
スタ群１３のレジスタ間で情報を転送したり、Ｉ／Ｏ回路１５に接続された外部機器とレ
ジスタ群１３との間で情報を転送したりする回路である。Ｉ／Ｏ回路１５は、図示せぬ外
部機器との間で情報を授受する際の制御を行う回路である。なお、周辺回路１４として、
これ以外の回路（例えば、コプロセッサ（Co-Processor））を有していてもよい。あるい
は、周辺回路１４自体を有しない構成としてもよい。すなわち、周辺回路１４は必須の構
成要素ではない。
【００１３】
ここで、具体的な説明に先立ち、本発明の原理について説明する。
通常、ＣＰＵ１１等のプロセッサにおいては、処理の簡略化のため、固定ビット長で命
令（＝命令コード＋オペランド）を定義している。このため命令の種類によっては、当該
命令の動作に影響を与えない、すなわち、機能、役割を与えられていないビットが命令の
命令コード中に含まれる。これらのビットは、各命令の実行において用いられることはな
いため、以下においては、不使用ビットという。不使用ビットのビット数は、命令により
異なり、１ビット〜複数ビットがある。
【００１４】
図２は、１６ビット長の命令を有するプロセッサの命令セットの例を説明する図である
。
上述したように、各命令は、命令コードを含んでおり、さらに必要に応じて、オペラン
ドを含んでいる。例えば、ａｎｄ命令は、１６ビット中、第６ビット〜第１５ビット（Ｍ
ＳＢ）が命令コードであり、第０ビット〜第５ビットは、オペランドである。また、ｊｍ
ｐ命令は、１６ビット中、第１０ビット〜第１５ビット（ＭＳＢ）が命令コードであり、
第０ビット〜第９ビットは、オペランドである。また、ｎｏｐ命令は、オペランドが存在
せず、１６ビット全部が命令コードである。
図２に示すように、命令のうち、ｌｉ命令（即値ロード命令）、ｌｄ命令（データロー
ド命令）、ｓｔ命令（データストア命令）については、不使用ビットが存在していない。
これに対し、ａｄｄ命令（加算命令）、ｓｕｂ命令（減算命令）、ａｎｄ命令（論理積
命令）、ｏｒ命令（論理和命令）およびｘｏｒ命令（排他的論理和命令）については、図
２に斜線部分で示すように、第６ビットから第１０ビットの５ビットの不使用ビットが存
在している。
【００１５】
また、ｊｍｐ命令（ジャンプ命令）及びｊｚ命令（零時ジャンプ命令（請求項中「条件
分岐命令」に対応））については、図２に斜線部分で示すように、第１０ビットの１ビッ
トの不使用ビットが存在している。
また、ｎｏｐ命令（ノーオペレーション命令）については、図２に斜線部分で示すよう
に、第０ビットから第１０ビットの１１ビットの不使用ビットが存在している。
これらの不使用ビットは、その値を書き換えたとしても命令の実行に何ら影響を与えな
い。
そこで、本実施形態においては、これらの不使用ビットの少なくとも一部に透かし情報
データを構成するビットを書き込むことにより、元のプログラムのサイズ、動作に影響を
与えることなく、透かし情報を埋め込む。そして、透かし情報が埋め込まれたプログラム
を構成する命令コードに基づいて、ランダムゲート回路１２を構成する回路情報を生成し
、この回路情報に基づいて情報処理装置１０を製造する。このようにして製造された情報
処理装置１０のランダムゲート回路１２に格納されているプログラムには、透かし情報が
含まれているので、当該透かし情報を読み出すことにより、情報処理装置１０が複製によ
り製造されたものであるか否かを判定することができる。また、透かし情報は、プログラ
ムの不使用ビットに埋め込まれているので、プログラムのデータ量を増加させることがな
い。また、透かし情報は、不使用ビットに拡散されて埋め込まれていることから、透かし
情報の存在を第三者に気付かれ、当該透かし情報が削除または改竄されることを防止でき
る。また、メモリアレイを有しないランダムゲート回路１２に透かし情報を格納すること
により、回路パターンを解析された場合であっても、透かし情報の存在に気付かれたり、
あるいは、透かし情報を削除または改竄されたりすることを防止できる。
【００１６】
図３は、透かし情報埋込処理の機能説明図である。
また、図４は透かし情報埋込処理の処理フローチャートである。なお、図４に示す処理
は、情報処理装置１０の回路情報を生成する図示せぬ設計装置２０において実行される処
理である。なお、設計装置２０は、ＣＰＵ（請求項中「生成手段」に対応）、ＲＯＭ、Ｒ
ＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）、入力デバイスとしてのキ
ーボード（請求項中「入力手段」に対応）等を有する一般的なパーソナルコンピュータに
よって構成されている。
まず、プログラムのソースを読み込み（ステップＳ１）、コンパイルしてバイナリコー
ドとする（ステップＳ２）。
一方、透かし情報としての認証情報を読み込み（ステップＳ３）、透かし情報データに
変換する（ステップＳ４）。なお、透かし情報としては、認証情報に限らず、所望の情報
をデータ化したものであればよい。
つづいて、プログラムのバイナリコードに含まれる命令コードおよび対応する不使用ビ
ットの位置を検索する（ステップＳ５）。
この場合において、命令コード及び不使用ビットの位置の検索の手順としては、以下の
（Ａ１）〜（Ａ３）のようなものが考えられる。
【００１７】
（Ａ１）  プログラムの格納アドレスにしたがって、命令コード及び当該命令コードに
おける不使用ビット位置を検索する。
例えば、アドレスの先頭から最後尾に向かって順に命令コードを検索し、各命令コード
を構成する不使用ビットもアドレスの先頭から最後尾に向かって順に検索する。
【００１８】
（Ａ２）  プログラムの格納アドレスにしたがって、所定の種類の命令コード及び当該
命令コードにおける不使用ビット位置を検索する。
例えば、所定の種類の命令コードとして、ａｄｄ命令及びｓｕｂ命令を検索対象とする
場合、アドレスの先頭から最後尾に向かって順にａｄｄ命令及びｓｕｂ命令の命令コード
を検索し、各命令コードを構成する不使用ビットもアドレスの先頭から最後尾に向かって
順に検索する。
【００１９】
（Ａ３）  プログラムに予め定めた特定のデータを予め定めた特定の順番で入力して処
理を行わせたと仮定した場合の処理実行順に命令コード及び当該命令コードにおける不使
用ビット位置を検索する。
例えば、入力データとして“０”を入力し続けた場合にプログラムが実行される順番で
命令コードを検索し、各命令コードを構成する不使用ビットについてはアドレスの先頭か
ら最後尾に向かって順に検索する。
【００２０】
つづいて設計装置２０は、検索された不使用ビットに透かし情報データを構成するビッ
ト列を順に埋め込む（ステップＳ６）。
この場合において、透かし情報データを構成するビット列を埋め込む手順としては、以
下の（Ｂ１）〜（Ｂ３）のようなものが考えられる。
【００２１】
（Ｂ１）  検索された各命令コードを構成する不使用ビットのうち、ＬＳＢ側（第０ビ
ット側）からＭＳＢ側に向かって、あるいは、ＭＳＢ側からＬＳＢ側に向かって順に透か
し情報データを構成するビット列を埋め込む。
例えば、各命令が１６ビット長の固定ビット長で形成されている場合に、第６ビットか
ら第１０ビットが不使用ビットである場合に、ＬＳＢ側から埋め込む場合、第６ビットか
ら第１０ビットに向かってビット列を順に埋め込むこととなる。
【００２２】
（Ｂ２）  少なくとも透かし情報データを構成するビット列を埋め込むのに十分な数の
不使用ビットが検索された時点で、検索された不使用ビットを含む命令コードについて、
命令コードが検索された順番で下位ビット側あるいは上位ビット側から順番に透かし情報
データを構成するビット列を埋め込む。
例えば、ａｄｄ命令→ｓｕｂ命令→ｎｏｐ命令が順番に検索された場合、上述の例の場
合、ａｄｄ命令及びｓｕｂ命令については、第６ビットから第１０ビットの５ビットの不
使用ビットが存在し、ｎｏｐ命令については、第０ビットから第１０ビットの１１ビット
の不使用ビットが存在しているので、下位ビット側から順番に透かし情報データを構成す
るビット列を埋め込む場合には、ｎｏｐ命令の第０ビット→ｎｏｐ命令の第１ビット→…
→ｎｏｐ命令の第４ビット→ｎｏｐ命令の第５ビット→ａｄｄ命令の第６ビット→ｓｕｂ
命令の第６ビット→ｎｏｐ命令の第６ビット→ａｄｄ命令の第７ビット→ｓｕｂ命令の第
７ビット→ｎｏｐ命令の第７ビット→…→ａｄｄ命令の第１０ビット→ｓｕｂ命令の第１
０ビット→ｎｏｐ命令の第１０ビットの順番でビット列を順に埋め込むこととなる。
【００２３】
（Ｂ３）  検索された各命令コードを構成する不使用ビットのうち、所定の位置の所定
数のビットに順に透かし情報データを構成するビット列を埋め込む。
例えば、検索された各命令コードの不使用ビットのうち、それぞれ最上位ビット（上述
のａｄｄ命令の場合、第１０ビット）に１ビットの透かし情報データを構成するビットを
埋め込む。
（Ｂ４）  上記（Ｂ１）〜（Ｂ３）の手順において、残りの不使用ビットには、透かし
情報データを構成するビット列を繰り返し埋め込んだり、任意のデータをランダムに書き
込んだりするように構成してもよい。
【００２４】
これらの結果、透かし情報を埋め込んだバイナリコードのプログラムが生成される。こ
のようにして生成された透かし入りバイナリコードは、ＲＴＬ（Register Transfer Leve
l）情報に変換される（ステップＳ７）。なお、ＲＴＬとは、集積回路設計において同期
デジタル回路を記述する手法の一種である。このようなＲＴＬを用いた設計では、回路の
動作をハードウェアレジスタ（フリップフロップ等）と、組み合わせ回路であるブール論
理回路との間の信号の流れ（データ転送）として定義する。ステップＳ７の処理では、Ｒ
ＴＬ情報は、図９を参照して後述するように、ランダムゲート回路１２に関する情報とし
て生成される。
【００２５】
つづいて、設計装置２０は、ＣＰＵ１１およびその他の部分に対応するＲＴＬ情報と、
ステップＳ７において生成されたＲＴＬ情報とを合成する（ステップＳ８）。このように
して合成されたＲＴＬ情報は、図示せぬ論理合成ソフトウェアツールにより論理ゲートを
組み合わせた回路としてのランダムゲートに変換される（ステップＳ９）。合成結果は、
図示せぬ物理レイアウトを行うツールに渡され、集積回路のパターンが作成される。この
ようにして作成された集積回路のパターンに基づいて製造された集積回路は、電子機器に
組み込まれることとなる（ステップＳ１０）。そして、図３に示すように、その後、複製
されたことが疑われる複製機器が見いだされた場合には、書き込んだ場合と同様の手順で
、ランダムゲート回路１２から透かし情報を抽出して読み出し（ステップＳ２１）、書き
込んだ透かし情報と照合し（ステップＳ２２）、書き込んだ透かし情報と同一の透かし情
報あるいは同一の透かし情報と特定可能な程度の透かし情報の一部が読み出された場合に
は複製がなされたと容易に判別することが可能となる。
この結果、不法な複製がなされることを抑止できると共に、不法な複製がなされた場合
に対処することが可能となる。
【００２６】
ここで、具体的な透かし情報の埋込処理の具体例について説明する。
図５は、プログラムのソースコードの一例の説明図である。
図５に示すプログラムにおいて、途中には条件分岐命令として、演算結果が０であった
場合にラベルＬＡＢＥＬに分岐させるｊｚ命令が記載されている。
図６は、図５に示したプログラムのメインルーチンであるＳＴＡＲＴルーチンをコンパ
イルした場合の、バイナリコードのビット配列を説明するための図である。
図６中、ハッチングで示した部分は、命令コード中の不使用ビット位置を表しており、
図６の場合、全部で２７ビットの不使用ビットが含まれている。
【００２７】
図７は、透かし情報データのビット列の説明図である。
図７においては、透かし情報データのビット列は、２６ビットで構成されており、理解
を容易にするため各ビットをアルファベット「Ａ」〜「Ｚ」で表記している。すなわち、
「Ａ」〜「Ｚ」は、それぞれ１ビットであり、その値は“０”又は“１”である。
【００２８】
図８は、第１具体例の透かし情報データのビット列の埋込状態の説明図である。
第１具体例は、上述した（Ａ１）の手順で命令コード及び不使用ビットを検索し、上述
した（Ｂ１）の手順に従ってＬＳＢ側から命令コード中の不使用ビットに透かし情報デー
タのビット列を埋め込んだ場合のものである。
この場合には、第１番目にアドレス＝“０”に格納されているａｎｄ命令が検索され、
ａｎｄ命令を構成する不使用ビットの第６ビットから第１０ビットに対し、第６ビットか
ら第１０ビットに向かう順番で透かし情報データビット列のうち、「Ａ」〜「Ｅ」の５ビ
ット分を順次埋め込むこととなる。
つづいて、第２番目にアドレス＝“１”に格納されているａｄｄ命令が検索され、ａｄ
ｄ命令を構成する不使用ビットの第６ビットから第１０ビットに対し、第６ビットから第
１０ビットに向かう順番で透かし情報データビット列のうち、「Ｆ」〜「Ｊ」の５ビット
分を順次埋め込むこととなる。
【００２９】
同様に、アドレス＝“３”に格納されているｘｏｒ命令を構成する不使用ビットの第６
ビットから第１０ビットに対し、透かし情報データビット列のうち、「Ｋ」〜「Ｏ」の５
ビット分が順次埋め込まれ、アドレス＝“４”に格納されているｓｕｂ命令を構成する不
使用ビットの第６ビットから第１０ビットに対し、透かし情報データビット列のうち、「
Ｐ」〜「Ｔ」の５ビット分が順次埋め込まれ、アドレス＝“５”に格納されているｊｚ命
令を構成する不使用ビットの第１０ビットに対し、透かし情報データビット列のうち、「
Ｕ」の１ビット分が埋め込まれ、アドレス＝“８”に格納されているｏｒ命令を構成する
不使用ビットの第６ビットから第１０ビットに対し、透かし情報データビット列のうち、
「Ｖ」〜「Ｚ」の５ビット分が順次埋め込まれることとなる。
【００３０】
このようにして透かし情報が埋め込まれたプログラムは、ＲＴＬ情報に変換されてＣＰ
Ｕ１１その他のＲＴＬ情報と合成された後、図示せぬ論理合成ソフトウェアツールによっ
てランダムゲートに変換される。図９は、ランダムゲート回路１２に対応するランダムゲ
ートのハードウエア記述言語による記述例を示す図である。この例では、ランダムゲート
回路１２は、「ｒｏｍａｄｒｓ」の入力に対して、「ｒｏｍｏｕｔ」を出力するランダム
ゲートとして記述されている。より詳細には、「ｒｏｍａｄｒｓ」の値に応じて、０〜１
０に記述された「ＲＯＭＯＵＴＳ」の値が選択されて出力される。例えば、「ｒｏｍａｄ
ｒｓ」の値が“０”である場合には、１６ビットの情報である「０００１＿１ＥＤＣ＿Ｂ
Ａ００＿１０００」が出力される。Ａ〜Ｅは、透かし情報のビットに対応している。なお
、ｃａｓｅ文の最後に記述されているように、デフォルト（ｄｅｆａｕｌｔ）値は、「０
０００＿００００＿００００＿００００」とされている。
【００３１】
このようにして生成されたランダムゲートに基づいて、物理レイアウトを行うツールが
集積回路のパターンを作成する。そして、作成された集積回路のパターンに基づいて、集
積回路としての情報処理装置１０が製造され、対象となる電子機器に組み込まれる。
【００３２】
ところで、以上のようにして製造された情報処理装置１０が、正当な使用権原を有しな
い第三者によって複製された場合には、複製された可能性がある情報処理装置１０のＩ／
Ｏ回路１５に対して、図示せぬパーソナルコンピュータを接続する。そして、パーソナル
コンピュータからＩ／Ｏ回路１５を介して、ランダムゲート回路１２に格納されているプ
ログラムを読み出すようにＣＰＵ１１に指示を行う。その結果、ＣＰＵ１１は、ランダム
ゲート回路１２に格納されているプログラムを読み出し、Ｉ／Ｏ回路１５を介してパーソ
ナルコンピュータに転送する。パーソナルコンピュータでは、転送されたプログラムから
、埋め込んだ場合と同様の手順に基づいて透かし情報を抽出する。この結果、抽出された
透かし情報が、埋め込まれた透かし情報と一致する場合には、情報処理装置１０が複製さ
れたものであると判断することができる。
【００３３】
図１０は、第２具体例の透かし情報データのビット列の埋込状態の説明図である。
第２具体例は、上述した（Ａ１）の手順で命令コード及び不使用ビットを検索し、上述
した（Ｂ２）の手順に従って下位ビット側から命令コード中の不使用ビットに透かし情報
データのビット列を埋め込んだ場合のものである。
この場合には、第１番目にアドレス＝“０”に格納されているａｎｄ命令が検索され、
第２番目にアドレス＝“１”に格納されているａｄｄ命令が検索され、第３番目にアドレ
ス＝“３”に格納されているｘｏｒ命令が検索され、第４番目にアドレス＝“４”に格納
されているｓｕｂ命令が検索され、第５番目にアドレス＝“５”に格納されているｊｚ命
令が検索され、第６番目にアドレス＝“８”に格納されているｏｒ命令が検索される。
【００３４】
これらの検索された命令のうち、不使用ビットの中で最も下位ビット側に位置するのは
、第６ビット目であるので、命令コードが検索された順番で第６ビットから順番に透かし
情報データを構成するビット列を埋め込むこととなり、アドレス＝“０”に格納されてい
るａｎｄ命令を構成する不使用ビットの第６ビットに対し、透かし情報データビット列の
うち、「Ａ」の１ビット分が埋め込まれることとなる。
つづいて、第２番目に検索されたアドレス＝“１”に格納されているａｄｄ命令を構成
する不使用ビットの第６ビットに透かし情報データビット列のうち、「Ｂ」の１ビット分
を埋め込むこととなる。
【００３５】
同様に、アドレス＝“３”に格納されているｘｏｒ命令を構成する不使用ビットの第６
ビットに透かし情報データビット列のうち「Ｃ」の１ビット分が埋め込まれ、アドレス＝
“４”に格納されているｓｕｂ命令を構成する不使用ビットの第６ビットに透かし情報デ
ータビット列のうち「Ｄ」の１ビット分が埋め込まれ、アドレス＝“８”に格納されてい
るｏｒ命令を構成する不使用ビットの第６ビットに透かし情報データビット列のうち「Ｅ
」の１ビット分が埋め込まれる。これにより検索された命令に含まれる第６ビット目に位
置する不使用ビットは全て透かし情報データビット列を構成するビットが埋め込まれたの
で、次に第７ビット目に不使用ビットが存在する命令を検索し、アドレス＝“０”に格納
されているａｎｄ命令を構成する不使用ビットの第７ビットに対し、透かし情報データビ
ット列のうち、「Ｆ」の１ビット分が埋め込まれることとなる。
以下、同様にして検索された命令のうち、第７ビット目に不使用ビットを有する命令の
第７ビット目に検索順で透かし情報データビット列がそれぞれ埋め込まれ、つづいて第８
ビット目→第９ビット目→第１０ビット目の順番で、検索された命令順に１ビットずつ、
透かし情報データビット列を構成するビットが順次埋め込まれ、最終的には、図１０に示
すような状態で処理が完了する。
【００３６】
図１１は、第３具体例の透かし情報データのビット列の埋込状態の説明図である。
第３具体例は、上述した（Ａ３）の手順で命令コード及び不使用ビットを検索し、上述
した（Ｂ１）の手順に従ってＬＳＢ側から命令コード中の不使用ビットに透かし情報デー
タのビット列を埋め込んだ場合のものである。
この場合には、プログラムに予め定めた特定のデータを予め定めた特定の順番で入力し
て処理を行わせた場合に、不使用ビットを有する命令であって、第１番目に実行される命
令は、アドレス＝“０”に格納されているａｎｄ命令であるので、このａｎｄ命令が第１
番目に検索され、ａｎｄ命令を構成する不使用ビットの第６ビットから第１０ビットに対
し、第６ビットから第１０ビットに向かう順番で透かし情報データビット列のうち、「Ａ
」〜「Ｅ」の５ビット分を順次埋め込むこととなる。
【００３７】
つづいて、不使用ビットを有する命令であって、第２番目に実行される命令は、アドレ
ス＝“１”に格納されているａｄｄ命令であるので、検索されて、このａｄｄ命令を構成
する不使用ビットの第６ビットから第１０ビットに対し、第６ビットから第１０ビットに
向かう順番で透かし情報データビット列のうち、「Ｆ」〜「Ｊ」の５ビット分を順次埋め
込むこととなる。
同様に、不使用ビットを有する命令であって、第３番目に実行される命令は、アドレス
＝“３”に格納されているｘｏｒ命令であるので、このｘｏｒ命令を構成する不使用ビッ
トの第６ビットから第１０ビットに対し、透かし情報データビット列のうち、「Ｋ」〜「
Ｏ」の５ビット分が順次埋め込まれる。
【００３８】
さらに不使用ビットを有する命令であって、第４番目に実行される命令は、アドレス＝
“４”に格納されているｓｕｂ命令であるので、このｓｕｂ命令を構成する不使用ビット
の第６ビットから第１０ビットに対し、透かし情報データビット列のうち、「Ｐ」〜「Ｔ
」の５ビット分が順次埋め込まれる。
このとき、ｓｕｂ命令の演算結果が０となり、図示しないゼロフラグがセットされたも
のとする。
そして、不使用ビットを有する命令であって、第５番目に実行される命令は、アドレス
＝“５”に格納されているｊｚ命令であるので、このｊｚ命令を構成する不使用ビットの
第１０ビットに対し、透かし情報データビット列のうち、「Ｕ」の１ビット分が埋め込ま
れる。
【００３９】
そして、第４番目に実行されたアドレス＝“４”に格納されているｓｕｂ命令の演算結
果により、図示しないゼロフラグがセットされているので、ｊｚ命令の実行の結果、処理
がメインルーチンＳＴＡＲＴからアドレス＝“１０”に格納されたサブルーチンＬＡＢＥ
Ｌに分岐されることとなる。
この結果、第６番目に実行される命令は、アドレス＝“１０”に格納されているｊｍｐ
命令であるので、このｊｍｐ命令を構成する不使用ビットの第１０ビットに対し、透かし
情報データビット列のうち、「Ｖ」の１ビット分が埋め込まれる。
本例によれば、ＣＰＵ１１にどのような特定のデータを予め定めたどのような特定の順
番で入力するかがわからなければ、透かし情報を解析することはできず、改竄が非常に困
難となる。一方、プログラムの改竄が行われた場合には、透かし情報を所定の手順で検出
して容易に改竄が行われた旨を特定することが可能となる。なお、ＣＰＵ１１に入力する
データとしては、例えば、Ｉ／Ｏ回路１５から入力するデータ等がある。
【００４０】
以上の説明のように、本実施形態によれば、プログラムの動作に影響を与えず、かつ、
透かし情報の埋め込み対象のプログラムのサイズも変更せずに透かし情報を埋め込むこと
ができるので、仮に第三者がプログラムの複製を行うに際し、プログラムの出所を誤魔化
すために、透かし情報の除去あるいは透かし情報の改竄を試みた場合に、従来よりも解析
が困難となり、ひいては、透かし情報の除去あるいは改竄が困難となり、プログラムの複
製を牽制することが可能となる。
さらに同一の透かし情報であっても、様々な埋込態様が可能となるため、プログラムの
配布ルートあるいは販売ルート等の流通ルート毎に透かし情報の埋込態様を変更すること
により、複製がなされたプログラムの流通ルートをより容易に特定することが可能となる
。
【００４１】
また、本実施形態では、透かし情報が埋め込まれたプログラムを、ランダムゲート回路
１２に保持させるようにした。ランダムゲート回路１２では、一般的なＲＯＭのように、
メモリアレイを有しないことから、回路パターンを見た場合に、プログラムコードがどこ
に格納されているかを回路パターンから判別することが非常に困難となる。このため、第
三者によって透かし情報が特定されたり、削除されたり、改竄されることを防止できる。
また、ランダムゲート回路１２は、他のランダムゲートと混在するように配置されること
から、透かし情報の特定を一層困難とすることができる。さらに、ランダムゲート回路１
２では、集積回路のパターンを生成するまでの過程で、論理圧縮が施される。このため、
透かし情報が埋め込まれた状態で、論理圧縮が施されることから、透かし情報が埋め込ま
れた場合であっても、回路規模が大きくなることを防止できる。
【００４２】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の
範囲内で任意に変形および応用が可能であることは勿論である。
例えば、以上の実施の形態では、プログラムの不使用ビットに透かし情報を埋め込むよ
うにしたが、ランダムゲート回路１２の特定の領域に、透かし情報を保持させるようにし
てもよい。例えば、プログラムの冒頭、中央、末尾の領域に、透かし情報を埋め込むよう
にしてもよい。
【００４３】
また、以上の実施の形態では、プログラムを構成する各命令コードのコード長は、固定
長としたが、プログラムに出現する命令コードの出現頻度等に応じて、命令コードのコー
ド長を変化させるようにしてもよい。具体的には、例えば、出現頻度が高い命令コードに
対して短いコード長を与えることにより、ランダムゲート回路１２のゲート数を減少させ
、その結果、情報処理装置１０の回路規模を小さくすることができる。この結果、透かし
情報を埋め込んだ場合であっても、回路規模が拡大することを防止できる。
【図面の簡単な説明】
【００４４】
【図１】実施形態の情報処理装置の概要構成ブロック図である。
【図２】１６ビット長の命令を有するプロセッサの命令セットの例を説明する図である。
【図３】透かし情報埋込処理の機能説明図である。
【図４】透かし情報埋込処理の処理フローチャートである。
【図５】プログラムのソースコードの一例の説明図である。
【図６】図５に示したプログラムのメインルーチンであるＳＴＡＲＴルーチンをコンパイルした場合の、バイナリコードのビット配列を説明するための図である。
【図７】透かし情報データのビット列の説明図である。
【図８】第１具体例の透かし情報データのビット列の埋込状態の説明図である。
【図９】図８に示すプログラムを有する組み合わせ回路ＲＯＭのＲＴＬ情報である。
【図１０】第２具体例の透かし情報データのビット列の埋込状態の説明図である。
【図１１】第３具体例の透かし情報データのビット列の埋込状態の説明図である。
【符号の説明】
【００４５】
１０…情報処理装置、１１…ＣＰＵ、１２…ランダムゲート回路、１３…レジスタ群、
１４…周辺回路、１５…Ｉ／Ｏ回路。
【図１】
2009199114.tif 000003
【図２】
2009199114.tif 000004
【図３】
2009199114.tif 000005
【図４】
2009199114.tif 000006
【図５】
2009199114.tif 000007
【図６】
2009199114.tif 000008
【図７】
2009199114.tif 000009
【図８】
2009199114.tif 000010
【図９】
2009199114.tif 000011
【図１０】
2009199114.tif 000012
【図１１】
2009199114.tif 000013