JP2002258961A - 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体 - Google Patents

計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体

Info

Publication number
JP2002258961A
JP2002258961A JP2001059308A JP2001059308A JP2002258961A JP 2002258961 A JP2002258961 A JP 2002258961A JP 2001059308 A JP2001059308 A JP 2001059308A JP 2001059308 A JP2001059308 A JP 2001059308A JP 2002258961 A JP2002258961 A JP 2002258961A
Authority
JP
Japan
Prior art keywords
information
sub
program
statement
computer program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001059308A
Other languages
English (en)
Inventor
Kazuya Kadogoe
和也 角越
Takao Nakamura
高雄 中村
Hiroshi Ogawa
宏 小川
Masashi Sakamoto
昌史 坂本
Yoichi Takashima
洋一 高嶋
Tadashi Nakanishi
正 仲西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2001059308A priority Critical patent/JP2002258961A/ja
Publication of JP2002258961A publication Critical patent/JP2002258961A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 各プログラムに固有の埋め込み記録をとって
おく必要がなく、効率的にプログラムから埋め込まれた
副情報を取り出す。 【解決手段】 本発明は、プログラと埋め込みたい副情
報を入力とし、予め決められた方法で、副情報を表現す
る実行されてもプログラムの動作結果に影響を与えない
1つ以上の命令文を生成し、それらの命令文をプログラ
ムに挿入し、命令文が付加されたプログラムを出力す
る。また、副情報が埋め込まれたプログラムを入力し、
予め決められた方法で、一つ以上の命令文を抽出し、抽
出された命令文から予め決められた方法で副情報を読み
出す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムへの副
情報埋め込む、及びプログラムからの副情報を読み出す
ための方法、装置、プログラム及び当該プログラムを格
納した記憶媒体に係り、特に、プログラムの不正コピー
や無断二次利用等の著作権問題を解決するためにプログ
ラムへ副情報を埋め込む、及び当該副情報を読み出すた
めの方法、装置、プログラム及び当該プログラムを格納
した記憶媒体に関する。
【0002】
【従来の技術】静止画や動画といったディジタル著作物
は、容易に複製や編集が可能であるため、制作者の著作
権が侵害されやすいといった問題がある。ディジタル著
作物の一つである、プログラムについても同じ問題があ
り、プログラムの無断盗用や、違法コピーによる不正利
用等の問題が起こっており、これらを解決するための著
作権保護技術が求められている。
【0003】なお、以下の説明において、計算機が処理
する演算の手順が記載されているデータを「プログラ
ム」と呼び、また、計算機が処理する演算を「命令文」
と呼ぶ。
【0004】従来は、プログラムの無断盗用に対する手
段として、 1) プログラムの中に、著作権情報を記述した文字列
を挿入しておく方法がある。
【0005】また、違法コピーに対する手段としては、 2) 正規の利用者以外は利用できないように制限する
ために、実行時に使用権の有無をチェックするルーチン
を挿入しておく方法(特願平5−225741、特願平
10−48527)等が提案されている。
【0006】しかし、上記の1)の方法では、著作権情
報文字列の部分が容易に特定でき、消去可能であるとい
う問題がある。
【0007】また、上記の2)の方法では、チェックし
て利用制限をするというアクションがプログラム内で行
われるため、それを手掛かりにプログラム中のチェック
部分を特定され、その部分のチェックを外されてしま
い、使用権が無いにもかかわらず、利用可能になってし
まうという問題がある。
【0008】そこで、そのような問題を解決する方法と
して、電子透かし的なアプローチがある。つまり、プロ
グラムの動作結果を変更することなく、利用者には分か
りにくいように、プログラムに副情報を付加することに
より、プログラムの無断盗用については、盗用したプロ
グラムの部分から埋め込まれた副情報を読むことによ
り、盗用の事実が分かること、また、違法コピーについ
ては、各配布プログラム毎に異なった情報を埋め込んで
おくことにより、不正コピーが見つかった際にコピー元
が分かってしまうため、プログラムの不正提供者がコピ
ーさせることを抑止させることができる。
【0009】プログラムの動作結果を変更することな
く、利用者にはわかりにくいようにプログラムに副情報
を付加する方法としては、例えば、特願平10−246
962「プログラムへの透かしの挿入方法及びシステ
ム」が提案されている。この方法は、副情報を埋め込む
各プログラム毎にそれに対応した透かし情報を記憶し、
保存しておく。つまり、各埋め込みを行ったプログラム
毎にそれに固有の埋め込み記録を取っておく。ここで、
「各プログラム固有の埋め込み記録」とは、原プログラ
ムに副情報を埋め込む際に必要な元プログラムへの副情
報の埋め込み場所、形式等である。これは、読み出しの
際に、各プログラム固有の埋め込み記録とプログラムと
対比させて、埋め込んだ副情報を特定する方法である。
【0010】
【発明が解決しようとする課題】しかしながら、上記の
特願平10−246962の方法では、副情報を埋め込
む各プログラム毎に、それに対応した透かし情報を記憶
し、保存しておく必要があり、そのため、この方式で
は、プログラムの無断盗用の検出に利用しようとする
と、サンプルされたプログラムに対して、盗用した疑い
のある元プログラムが明確に特定されていないと、登録
されているプログラムの全てのパターンと照合する必要
があるため、効率的に埋め込まれている副情報の検出を
行うことができないという問題がある。
【0011】本発明は、上記の点に鑑みなされたもの
で、各プログラムに固有の埋め込み記録をとっておく必
要がなく、効率的にプログラムから埋め込まれた副情報
を取り出すことが可能な計算機プログラムへの副情報埋
め込み方法及び装置及び計算機プログラムへの副情報埋
め込みプログラム及び計算機プログラムへの副情報埋め
込みプログラムを格納した記憶媒体及び計算機プログラ
ムからの副情報読み出し方法及び装置及び計算機プログ
ラムからの副情報読み出しプログラム及び計算機プログ
ラムからの副情報読み出しプログラムを格納した記憶媒
体を提供することを目的とする。
【0012】
【課題を解決するための手段】図1は、本発明の原理を
説明するための図である。
【0013】本発明(請求項1)は、計算機プログラム
への副情報埋め込み方法において、埋め込みを行う副情
報もしくは、副情報とプログラムから、実行されてもプ
ログラムの動作結果に影響を与えない、該副情報を表現
する一つ以上の命令文を予め決められた方法で生成し
(ステップ11)、命令文をプログラムに挿入する(ス
テップ12)。
【0014】本発明(請求項2)は、命令文を生成する
際に、プログラムに含まれない一つ以上の変数を生成
し、該変数への代入文を命令文として生成する。
【0015】本発明(請求項3)は、命令文をプログラ
ムに挿入する際に、プログラムを一連の処理を実行する
単位であるプロシジャに分割し、各プロシジャ内におい
て、プロシジャ実行時に実行され得る順序が一定である
ような命令文挿入候補位置を選択し、プログラムにおい
て、プロシジャの出現する順番に依らない、予め決めら
れた方法で、順序付けされたプロシジャを選択し、順序
付けされたプロシジャと、各プロシジャにおける順序付
けされた命令文挿入候補位置に基づいて、命令文を挿入
する。
【0016】本発明(請求項4)は、入力された副情報
を、誤り検出符号化用情報を用いて誤り検出符号への変
換を行ってからプログラムに埋め込む、該副情報を暗号
化鍵情報を用いて暗号化アルゴリズムによる暗号化を行
ってから埋め込む、該副情報を誤り訂正符号を用いて符
号化してから埋め込む、の少なくとも1つの処理を行
う。
【0017】図2は、本発明の原理構成図である。
【0018】本発明(請求項5)は、計算機プログラム
への副情報埋め込み装置であって、埋め込みを行う副情
報もしくは、副情報とプログラムから、実行されてもプ
ログラムの動作結果に影響を与えない、該副情報を表現
する一つ以上の命令文を予め決められた方法で生成する
命令文生成手段150と、命令文をプログラムに挿入す
る命令文挿入手段160とを有する。
【0019】本発明(請求項6)は、命令文生成手段1
50において、プログラムに含まれない一つ以上の変数
を生成し、該変数への代入文を命令文として生成する手
段を有する。
【0020】本発明(請求項7)は、命令文挿入手段1
50において、プログラムを一連の処理を実行する単位
であるプロシジャに分割する手段と、各プロシジャ内に
おいて、プロシジャ実行時に実行され得る順序が一定で
あるような命令文挿入候補位置を選択する手段と、プロ
グラムにおいて、プロシジャの出現する順番に依らな
い、予め決められた方法で、順序付けされたプロシジャ
を選択する手段と、順序付けされたプロシジャと、各プ
ロシジャにおける順序付けされた命令文挿入候補位置に
基づいて、命令文を挿入する手段とを有する。
【0021】本発明(請求項8)は、入力された副情報
を、誤り検出符号化用情報を用いて誤り検出符号への変
換を行う誤り検出符号化手段、該副情報を暗号化鍵情報
を用いて暗号化アルゴリズムによる暗号化を行う暗号化
手段、該副情報を誤り訂正符号を用いて符号化する誤り
訂正符号化手段の少なくとも1つの手段を行う変換手段
を有する。
【0022】本発明(請求項9)は、計算機プログラム
への副情報埋め込みプログラムであって、埋め込みを行
う副情報もしくは、副情報とプログラムから、実行され
てもプログラムの動作結果に影響を与えない、該副情報
を表現する一つ以上の命令文を予め決められた方法で生
成する命令文生成プロセスと、命令文をプログラムに挿
入する命令文挿入プロセスとを有する。
【0023】本発明(請求項10)は、命令文生成プロ
セスにおいて、プログラムに含まれない一つ以上の変数
を生成し、該変数への代入文を命令文として生成するプ
ロセスを有する。
【0024】本発明(請求項11)は、命令文挿入プロ
セスにおいて、プログラムを一連の処理を実行する単位
であるプロシジャに分割するプロセスと、各プロシジャ
内において、プロシジャ実行時に実行され得る順序が一
定であるような命令文挿入候補位置を選択するプロセス
と、プログラムにおいて、プロシジャの出現する順番に
依らない、予め決められた方法で、順序付けされたプロ
シジャを選択するプロセスと、順序付けされたプロシジ
ャと、各プロシジャにおける順序付けされた命令文挿入
候補位置に基づいて、命令文を挿入するプロセスとを有
する。
【0025】本発明(請求項12)は、入力された副情
報を、誤り検出符号化用情報を用いて誤り検出符号への
変換を行う誤り検出符号化プロセス、該副情報を暗号化
鍵情報を用いて暗号化アルゴリズムによる暗号化を行う
暗号化プロセス、該副情報を誤り訂正符号を用いて符号
化する誤り訂正符号化プロセスの少なくとも1つのプロ
セスを行う変換プロセスを有する。
【0026】本発明(請求項13)は、計算機プログラ
ムへの副情報埋め込みプログラムを格納した記憶媒体で
あって、請求項9、請求項10、請求項11、請求項1
2記載のプログラムの少なくとも1つを格納する。
【0027】本発明(請求項14)は、計算機プログラ
ムからの副情報読み出し方法において、入力されたプロ
グラムから、予め決められた方法で、一つ以上の命令文
を抽出し(ステップ21)、抽出された命令文から、予
め決められた方法で、副情報を読み出す(ステップ2
2)。
【0028】本発明(請求項15)は、命令文を抽出す
る際に、プログラムに出現する一つ以上の変数について
の代入文を抽出する。
【0029】本発明(請求項16)は、命令文を抽出す
る際に、プログラムを一連の処理を実行する単位である
プロシジャに分割し、各プロシジャ内において、プロシ
ジャ実行時に実行され得る順序に基づいて、候補として
得られた命令文を順序付けし、予め決められた方法で各
プロシジャを順序付けし、各プロシジャ内における命令
文の順序と、各プロシジャの順序に基づいて候補として
得られた各命令文を順序付けする。
【0030】本発明(請求項17)は、副情報を読み出
す際に、抽出された命令文から変換された情報の誤り検
出符号の復号化を行ない、復号化された情報から計算さ
れる情報を副情報とする、または、抽出された命令文か
ら変換された情報を復号化鍵情報を用いて暗号化アルゴ
リズムにより復号化して得られた情報を副情報とする、
または、抽出された命令文から変換された情報を誤り訂
正符号を用いて復号化して得られた情報を副情報とす
る。
【0031】本発明(請求項18)は、計算機プログラ
ムからの副情報読み出し装置であって、入力されたプロ
グラムから、予め決められた方法で、一つ以上の命令文
を抽出する命令文抽出手段230と、抽出された命令文
から、予め決められた方法で、副情報を読み出す命令文
変換手段240とを有する。
【0032】本発明(請求項19)は、命令文抽出手段
230において、プログラムに出現する一つ以上の変数
についての代入文を抽出する手段を有する。
【0033】本発明(請求項20)は、命令文抽出手段
230において、プログラムを一連の処理を実行する単
位であるプロシジャに分割する手段と、各プロシジャ内
において、プロシジャ実行時に実行され得る順序に基づ
いて、候補として得られた命令文を順序付けする手段
と、予め決められた方法で各プロシジャを順序付けする
手段と、各プロシジャ内における命令文の順序と、各プ
ロシジャの順序に基づいて候補として得られた各命令文
を順序付けする手段とを有する。
【0034】本発明(請求項21)は、抽出された命令
文から変換された情報の誤り検出符号の復号化を行な
い、復号化された情報から計算される情報を副情報とす
る誤り検出手段と、抽出された命令文から変換された情
報を復号化鍵情報を用いて暗号化アルゴリズムにより復
号化して得られた情報を副情報とする復号化手段と、抽
出された命令文から変換された情報を誤り訂正符号を用
いて復号化して得られた情報を副情報とする誤り訂正手
段の、少なくともいずれか一つの手段を行う復元手段を
有する。
【0035】本発明(請求項22)は、計算機プログラ
ムからの副情報読み出しプログラムであって、入力され
たプログラムから、予め決められた方法で、一つ以上の
命令文を抽出する命令文抽出プロセスと、抽出された命
令文から、予め決められた方法で、副情報を読み出す命
令文変換プロセスとを有する。
【0036】本発明(請求項23)は、命令文抽出プロ
セスにおいて、プログラムに出現する一つ以上の変数に
ついての代入文を抽出するプロセスを有する。
【0037】本発明(請求項24)は、命令文抽出プロ
セスにおいて、プログラムを一連の処理を実行する単位
であるプロシジャに分割するプロセスと、各プロシジャ
内において、プロシジャ実行時に実行され得る順序に基
づいて、候補として得られた命令文を順序付けするプロ
セスと、予め決められた方法で各プロシジャを順序付け
するプロセスと、各プロシジャ内における命令文の順序
と、各プロシジャの順序に基づいて候補として得られた
各命令文を順序付けするプロセスとを有する。
【0038】本発明(請求項25)は、抽出された命令
文から変換された情報の誤り検出符号の復号化を行な
い、復号化された情報から計算される情報を副情報とす
る誤り検出プロセスと、抽出された命令文から変換され
た情報を復号化鍵情報を用いて暗号化アルゴリズムによ
り復号化して得られた情報を副情報とする復号化プロセ
スと、抽出された命令文から変換された情報を誤り訂正
符号を用いて復号化して得られた情報を副情報とする誤
り訂正プロセスの少なくともいずれか一つのプロセスを
行う復元プロセスを有する。
【0039】本発明(請求項26)は、計算機プログラ
ムからの副情報読み出しプログラムを格納した記憶媒体
であって、請求項22、請求項23、請求項24、請求
項25記載のプログラムの少なくとも1つを格納する。
上記のように、本発明によれば、プログラムと埋め込み
たい副情報を入力とし、予め決められた方法で、実行さ
れてもプログラムの動作結果に影響を与えない、埋め込
みたい副情報を表現する一つ以上の命令文を生成してプ
ログラムに挿入し、命令文が付加された当該プログラム
を出力することにより、副情報の埋め込みを行い、埋め
込み処理の逆の処理を行うことにより副情報の読み出し
を行う。このように副情報の埋め込み、読み出しを行う
ことにより、埋め込まれた命令文そのものが情報を表現
しているため、各プログラムに固有の埋め込み記録をと
っておかなくても、埋め込まれた副情報を読み出すこと
が可能となる。
【0040】また、元々存在しなかった変数への代入操
作を行うことにより、元のプログラムの動作結果に影響
を与えることはないため、埋め込みたい副情報を表現す
る、実行されてもプログラムの動作結果に影響を与えな
い、一つ以上の命令文を効果的に生成することが可能と
なる。
【0041】また、請求項3の方法で、副情報の埋め込
み、読み出しを行うことにより、制御フローを保ったプ
ログラムの変換が施された場合でも、埋め込まれた挿入
文の、埋め込み、読み出し時の順番は不変となるため、
制御フローを保ったプログラムの変換が行われたとして
も、埋め込まれた副情報が残り続けることが可能とな
る。
【0042】また、副情報を誤り検出符号への変換を行
ってから、プログラムの埋め込みを行うことにより、埋
め込んだ副情報を検出した際に、その検出の信頼性を確
保することが可能となる。
【0043】また、副情報の暗号化を用いることによ
り、埋め込まれた副情報の改ざんを非常に困難にするこ
とが可能になる。
【0044】さらに、副情報の誤り訂正符号への変換を
行ってからプログラムに埋め込むことにより、各種のプ
ログラムに対する変換が施されることにより、挿入され
た命令文が数個、消失や変化したとしても、埋め込まれ
た副情報を読み出すことが可能になる。
【0045】
【発明の実施の形態】図3は、本発明の動作の概要を説
明するための図である。
【0046】まず、副情報埋め込み時の動作について説
明する。
【0047】ステップ110) 最初に、プログラムと
当該プログラムに埋め込むための副情報を入力する。
【0048】ステップ120) 埋め込みを行う副情報
から、実行されてもプログラムの動作結果に影響を与え
ない、一つ以上の命令文を生成する。命令文は、プログ
ラムに含まれない一つ以上の変数を新たに追加し、その
変数への代入文を命令文として生成する。
【0049】ステップ130) 生成された命令文をプ
ログラムに挿入する。詳しくは、プログラムをプロシジ
ャに分割し、各プロシジャ内において、プロシジャ実行
時に実行され得る順序が一定であるような命令文挿入候
補位置を選択し、プログラムにおいて、プロシジャがコ
ード部に出現する順番に依らない、予め決定された方法
で順序付けされたプロシジャを選択し、順序付けされた
プロシジャと、各プロシジャにおける順序付けされた命
令文挿入候補位置に基づいて命令文を挿入する。ここ
で、「プロシジャ」とは、プログラムにおいて、一連の
処理を実行する単位とする(C言語であれば、関数、オ
ブジェクト指向言語であれば、メソッド、機械語であれ
ば、例えば、Intel アーキテクチャのCPUにおいて
は、CALL命令で制御が移され、RET命令で制御が
返される部分、Java bytecode においては、バイトコー
ドで表されたメソッド)。
【0050】なお、副情報に対応する命令文を生成する
際に以下のような操作を付加することも可能である。
【0051】 副情報を誤り検出符号への変換を行っ
てから埋め込む。
【0052】 副情報を暗号化鍵情報による暗号化に
よって変換してから埋め込む。
【0053】 副情報を誤り訂正符号への変換を行っ
てから埋め込む。
【0054】 副情報を誤り検出符号への変換を行な
い、それを暗号化鍵情報によって暗号化してから埋め込
む。
【0055】 埋め込みたい副情報を誤り検出符号へ
の変換を行ない、それを誤り訂正符号を用いて符号化し
てから埋め込む。
【0056】 埋め込みたい副情報を、暗号化鍵情報
によって暗号化し、それを誤り訂正符号を用いて符号化
してから埋め込む。
【0057】 埋め込みたい副情報を、誤り検出符号
への変換を行ない、それを暗号化鍵情報によって暗号化
し、それを誤り訂正符号を用いて符号化してから埋め込
む。 次に、副情報の読み出しの動作について説明する。
【0058】ステップ210) 副情報が埋め込まれた
プログラムを入力する。
【0059】ステップ220) 入力されたプログラム
から、プログラムに出現する一つ以上の変数についての
代入文を抽出する。詳しくは、プログラムをプロシジャ
に分割し、各プロシジャ内において、プロシジャ実行時
に実行され得る順序に基づいて、候補として得られた命
令文を順序付けし、予め決められた方法で各プロシジャ
を順序付けし、各プロシジャ内のおける命令文の順序
と、各プロシジャの順序に基づいて、候補として得られ
た各命令文を順序付けする。
【0060】ステップ230) 抽出された命令文から
副情報を読み出す。この副情報を読み出す際に以下のよ
うな方法も可能である。
【0061】 抽出された命令文から変換された情報
の誤り検出符号の復号化を行ない、その際に復号化され
た情報の信頼度の計算を行ない、信頼度が予め決められ
た閾値を越えている場合に、復号化された情報を副情報
とする。
【0062】 抽出された命令文から変換された情報
を、復号化鍵情報を用いて、復号化し、それを副情報と
する。
【0063】 抽出された命令文から変換された情報
を、誤り訂正符号を用いて復号化したものを得られた副
情報とする。
【0064】 上記、、、の方法の組み合わせ
により副情報を得る。
【0065】
【実施例】以下、図面と共に本発明の実施例を説明す
る。
【0066】[第1の実施例]図4は、本発明の第1の
実施例の副情報埋め込み装置の構成を示す。
【0067】同図に示す副情報埋め込み装置は、プログ
ラム入力部110、副情報入力部120、暗号化鍵入力
部130、副情報変換部140、付加命令文生成部15
0、付加命令文挿入部160、プログラム出力部170
から構成される。
【0068】プログラム入力部110は、副情報を埋め
込むためのプログラムを入力し、付加命令文生成部15
0と付加命令文挿入部160に渡す。
【0069】副情報入力部120は、プログラムに埋め
込むための副情報を入力して副情報変換部140に渡
す。
【0070】暗号化鍵入力部130は、暗号化鍵を入力
し、副情報変換部140に渡す。
【0071】副情報変換部140は、誤り検出符号化部
141、暗号化部142、誤り訂正符号化部143から
構成され、入力された副情報を変換していく。
【0072】まず、誤り検出符号化部141において、
入力された副情報から、誤り検出符号化された副情報を
生成する。
【0073】その方法としては、例えば、埋め込みたい
情報をビット列で表したものをw、誤り検出符号化部1
41において予め設定されている、または、外部から入
力として供給される誤り検出符号化用情報をビット列で
表現したものをkr 、誤り検出符号化された副情報をビ
ット列で表現したものをwe と表すと、we =w‖kr
として構成できる。但し、x‖yは、ビット列xとビッ
ト列yを結合してできたビット列を表す。このように構
成すると、読み出された副情報の信頼性が確保できる。
この理由は、この方法に対応した副情報の読み出しとし
て、例えば、kr(ビット長がmであるとする)と読み
出された情報の下位mビットの各ビットを比較して(一
致したビット数)/mを信頼度とし、それが、1の場
合、つまり、全てが一致していた場合のみ、副情報の検
出が成功したとして下位mビットを除いた情報を、読み
出された副情報とすることにより、読み出された情報
は、ランダムに出現するとすれば、読み出された情報の
下位mビット全てがkr と一致する可能性は、(1/2
m )であるので、十分な長さのkr を設けることで、読
み出された副情報の信頼性が確保できるからである。
【0074】次に、暗号化部142では、誤り検出符号
化された副情報と、暗号化鍵から、暗号化された副情報
を生成する。
【0075】一般的には、誤り検出符号化された副情報
をビット列で表現したものをwe 、暗号化用鍵をビット
列で表現したものをkc 、暗号化された副情報をビット
列で表現したものをwecと表すと、wec=E(we ,k
c )という処理により表現できる。但し、E(i,k)
は、暗号化アルゴリズムEを用いて、情報iを暗号鍵k
で暗号化した情報を表すものとする。
【0076】暗号化アルゴリズムとしては、例えば、文
献「岡本龍明・山本博資著、“現代暗号”、産業図書,
1997」pp.80-87にあるDES(Data Encryption Standa
rd)をECBモードを用いて使う方法がある。当該DE
Sは、ブロック暗号の一種であり、64ビットサイズの
ブロックを1単位として暗号化処理を行う。ブロック暗
号の使用モードであるECBモードについては、文献
「櫻井幸一監訳“暗号理論の基礎”、共立出版、199
6」pp.91-92に記載されている。当該ECBモードは、
連続した64ビットの平文ブロックx1 ,x2 ,…に対
して同じ鍵を用いて暗号化し、暗号文ブロックy1 ,y
2 ,…を出力する。暗号化されるビット列wecのビット
数が64ビットの倍数でないときは、全ブロックの完全
な構成ができないため、例えば、wecの後ろに、ランダ
ムに生成されたビット列を付け足して、ビット数を64
の倍数にすることによってブロックを構成することがで
きる。
【0077】なお、ここでは、暗号化アルゴリズムE
は、共通鍵暗号アルゴリズムを用いたが、暗号化アルゴ
リズムEは、共通暗号アルゴリズム、公開鍵暗号アルゴ
リズムのどちらで実現してもよい。
【0078】このように、埋め込む情報の暗号化を行う
ことにより、埋め込まれた副情報を、他人が意図した情
報に改竄することを非常に困難にすることが可能とな
る。
【0079】次に、誤り訂正符号化部143では、暗号
化された副情報から、誤り訂正符号化された副情報を生
成する。その方法としては、例えば、文献「宮川洋・岩
垂好裕・今井秀樹著“符号理論”、昭晃堂、1973」
pp.267-269にある、誤り訂正符号であるリード・ソロモ
ン符号によって実現する方法がある。
【0080】これにより、各種のプログラムに対する変
換が施されることにより、挿入された命令文が数個、消
失や変化したとしても、埋め込まれた副情報を読み出す
ことが可能となる。ここで、「各種のプログラムに対す
る変換」とは、例えば、プログラムへの最適化処理や、
埋め込まれた副情報の消去、改ざんを試みる攻撃が該当
する。その理由は、各種のプログラムに対する変換によ
り、挿入された命令文が数個、消失や変化したとする
と、副情報読み出しの際に、読み出された情報に消失や
変化が見られることが考えられるが、情報の消失や変化
を訂正可能な誤り訂正符号を埋め込む情報に適用するこ
とにより、そのような消失や変化が起こった場合でも意
図した情報が読み出せるからである。
【0081】なお、本実施例においては、副情報変換部
140に、誤り検出符号化部141、暗号化部142、
誤り検出符号化部143の全てが存在するものを記載し
たが、各々が存在しないものも実施可能である。
【0082】次に、付加命令文生成部150では、入力
されたプログラムと変換された情報から、変換された情
報を表現する命令文列を生成する。
【0083】その生成方法としては、まず、表現したい
情報を決められたビット数毎に分割し、各分割されたビ
ット列を、それに対応する命令文に変換するという方法
がある。
【0084】分割されたビット列に対応する命令文とし
ては、例えば、元のプログラムに用いられていない変数
をチェックし、元のプログラムに存在しない変数名を生
成し、それに対する代入文を用いる方法がある。
【0085】元々存在しなかった変数への代入操作は、
元のプログラムの動作結果に影響を与えない。図5は、
本発明の第1の実施例で扱う一般的なプログラムの模式
図を示す。ヘッダ部にある変数は、コード部にあるすべ
てのプロシジャから参照できる変数とする。例えば、C
言語では、プログラムはソースコードが書かれている1
ファイルにあたり、ヘッダ部にある変数情報はグローバ
ル変数にあたり、コード部における各プロシジャは、各
関数にあたる。
【0086】例えば、Java bytecode では、プログラム
が1クラスファイルあたり、ヘッダ部にある変数情報
は、クラスファイル中のフィールド領域に書かれている
変数にあたり、コード部における各プロシジャは、メソ
ッドにあたる。
【0087】上記の変数のチェック、存在しなかった変
数名の生成は、ヘッダ部にある変数情報を対象にする方
法がある。
【0088】上記のような命令文を生成する方法として
は、例えば、以下のような方法がある。
【0089】まず、副情報を埋め込む対象のプログラム
の形式に依存しない汎用的な形で表現した代入文(以
後、代入文テンプレートと呼ぶ)を作成する。元のプロ
グラムに存在しない変数名をaとおくと、aへの代入文
テンプレートとして、例えば、図6のように表せる代入
文テンプレートを考えることができる。
【0090】o1は、変数aもしくは、それ以外の変数
が入り、o2には、t1からt2の値が入るものとす
る。opは、「+」や「*」等の二項演算子であるとす
る。
【0091】ここで、1個の代入文テンプレートによっ
て表されるビット列で表現された情報と代入文テンプレ
ートとの対応関係の例を以下に示す。
【0092】o2が2〜5、opが加算と乗算、とする
と、4ビットのビット列を表すことができ、その対応表
としては、 ビット列0000→a=a+2 ビット列0001→a=a+3 ビット列0010→a=a+4 ビット列0011→a=a+5 ビット列0100→a=[a以外の変数]+2 ビット列0101→a=[a以外の変数]+3 ビット列0110→a=[a以外の変数]+4 ビット列0111→a=[a以外の変数]+5 ビット列1000→a=a*2 ビット列1001→a=a*3 ビット列1010→a=a*4 ビット列1011→a=a*5 ビット列1100→a=[a以外の変数]*2 ビット列1101→a=[a以外の変数]*3 ビット列1110→a=[a以外の変数]*4 ビット列1111→a=[a以外の変数]*5 というように構成できる。
【0093】なお、上記の代入文テンプレート構成法は
一例であって、表現したい情報と、それに対応する代入
文テンプレートのパターンを定めることができればよ
い。
【0094】次に、各代入文テンプレートを埋め込みを
行う対象プログラムに応じた形(対象プログラムがソー
スコードであれば、そのソースコードを記述している言
語における代入文の形式、機械語の場合は、代入文テン
プレートの表す代入操作に等価な一つ以上の機械語命令
文列)に変換する。その際に、代入文テンプレートで
は、「a以外の変数」と表現されていた変数は、例え
ば、元のプログラムに用いられていた変数をランダムに
選んで割り当てていく方法がある。ここで、代入文テン
プレートを、埋め込みを行う対象プログラムに応じた形
に変換する例を、図7、図8に示す。
【0095】図7は、対象プログラムがPascalで記述さ
れたソースコードで、a以外の変数としてv0という変
数を選んだ場合であり、図8は、対象プログラムが「Ja
va bytecode 」で、a以外の変数として、v0という変
数を選んだ場合(機械語の表現は、“jasmin”形式を使
用している。変数a,v0が存在するclass 名を“exam
ple ”としている)の場合を示す。
【0096】まとめると、入力されたプログラムをp、
変換された埋め込みたい副情報をw、付加する命令文列
をs->とおくと、 1.P中に存在しない変数名を生成する: 2.wを一つの代入文テンプレートで表現できるビット
長に分割し、 w->=(w0 ,w1 ,…,wn-1 ) を生成する:3.w->の各要素を、対応する代入文テン
プレートに変換し、代入文テンプレートの列 p->=(p0 ,p1 ,…,pn-1 ) を生成する:4.p->の各要素を埋め込みを行う対象プ
ログラムに応じた形に変換し、命令文列 s->=(s0 ,s1 ,…,sn-1 ) を生成する:という手順で、付加する命令文列を生成す
ることができる。
【0097】次に、付加命令文挿入部160では、入力
されたプログラムと、付加する命令文列から、命令文列
が埋め込まれたプログラムを生成する。
【0098】その方法としては、以下のような方法があ
る。
【0099】図6に示すようにプログラムのコード部に
は、プロシジャが順番に並んでいる。
【0100】一番単純な挿入方法としては、入力された
付加する命令文列に記されている新たに付加される変数
の宣言文を、ヘッダ部にある変数情報部に付加し、付加
する命令文列s->=(s0 ,s1 ,…,sn-1 )の各要
素を、s0 から順にコード部の先頭から末尾に向かって
ランダムな間隔をおきながら挿入していく方法がある。
図9にその例を示す。
【0101】以上の方法により、副情報が埋め込まれた
プログラムが生成される。
【0102】また、プログラムの中に、変数の名前に関
する情報が入っている場合は、副情報の埋め込みを分か
りにくくするため、それらの変数の名前に関する情報を
消去する、または、変更するといったことを、プログラ
ム出力部170において行ってもよい。
【0103】本実施例では、一つの変数についての代入
文の挿入を行ったが、複数の変数についての代入文に拡
張することにより、複数の情報を埋め込むことも可能で
ある。
【0104】[第2の実施例]本実施例では、副情報読
み出しについて説明する。
【0105】本実施例では、前述の第1の実施例に記載
された副情報埋め込み装置で生成されたプログラムか
ら、副情報を読み出すための装置を示す。
【0106】図10は、本発明の第2の実施例の副情報
読み出し装置の構成を示す。
【0107】同図に示す副情報読み出し装置は、プログ
ラム入力部210、復号化鍵入力部220、命令文抽出
部230、命令文変換部240、副情報復元部250、
及び副情報出力部260から構成される。
【0108】プログラム入力部210は、副情報が埋め
込まれたプログラムを入力し、命令文抽出部230に渡
す。
【0109】復号化鍵入力部220は、復号するための
復号鍵を入力し、副情報復元部250に渡す。
【0110】命令文抽出部230は、入力されたプログ
ラムから、予め定められた方法で、埋め込まれたと思わ
れる付加命令文列の候補の列を抽出する。その方法とし
ては、前述の第1の実施例に記載した副情報埋め込み装
置の方法に対応する例として、以下の方法があげられ
る。
【0111】前述の第1の実施例に記載した例では、元
のプログラムに存在しなかった変数を付加し、それに対
する代入文を付加命令文とし、それをプログラムのコー
ド部の先頭から順に挿入しているので、プログラムの各
変数について、それに関する代入文(機械語の場合は、
代入文操作と等価な機械語の列)を抽出し、コード文に
おける出現順番に並べた列を出力とすればよい。その出
力例を図11に示す。対象プログラムが機械語の場合
は、代入文の操作と等価な機械語の列を抽出する方法と
しては、例えば、第1の実施例で記載した、汎用的な形
で表現した代入文から変換され得る機械語の列のパター
ンに合致した機械語の列をプログラムから抽出してくる
方法がある。
【0112】命令文変換部240では、抽出された各変
数についての命令文の列から、各変数についての命令文
の列に対応する情報を生成する。その方法としては、前
述の第1の実施例に記載した副情報埋め込み装置の方法
に対応する例として、以下の方法があげられる。
【0113】まず、入力された各変数についての命令文
の列の各命令文それぞれを、第1の実施例で記載した、
代入文テンプレートに変換し(対応する代入文テンプレ
ートが存在せず、変換できない命令文については、それ
が入力になかったものとして扱う)、第1の実施例であ
げた、表現したい情報から、それに対応する代入文テン
プレートへの写像の逆写像を、プログラム中に出現する
各変数vi における代入文の列 svi->=(svi0 ,svi1 ,… ) について施し、対応する情報の列 ivi->=(ivi0 ,ivi1 ,…) を得、ivi->の各要素を結合してできる情報Iviを生成
する。
【0114】ただし、逆写像が存在しない代入文につい
ては、それを除いて対応する情報の列を生成する。
【0115】1変数についての上記の例を図12に示
す。図12は、本発明の第2の実施例の代入文テンプレ
ートの列、対応する情報の列、結合してできる情報の例
を示す。
【0116】以上の処理ににより、各変数についての命
令文の列に対応する情報 I->=(Iv0,IV1,…) が生成される。次に、副情報復元部250では、誤り訂
正部251において、入力されたI->=(Iv0,IV1,
…)から、誤り訂正されたI’->=(Ivo’,…)を生
成する。その方法としては、第1の実施例に記載した副
情報埋め込み装置の方法に対応する例として、以下の方
法があげられる。
【0117】第1の実施例に記載した、誤り訂正符号化
部143で用いられたアルゴリズムに対する復号をI->
の各要素に施し、各要素の内、復号可能であったものの
みを要素としたI’-> を出力とする。
【0118】次に、副情報復元部250では、復号化部
252において、入力されたI’->の各要素について埋
め込み時に行われた暗号化の復号を行う。その方法とし
ては、第1の実施例に記載した副情報埋め込み装置の方
法の対応する例として、以下の方法がある。
【0119】第1の実施例に記載した、暗号化部142
での暗号化アルゴリズムに対応する復号アルゴリズム
と、暗号化時に用いられた暗号化鍵に対応する復号化鍵
を用いて、I’->の各要素を復号化し、I”->=(Iv
o”,…)を得る。
【0120】次に、誤り検出部253では、入力された
I”->から副情報を出力する。
【0121】その方法としては、第1の実施例に記載し
た副情報埋め込み装置の方法に対応する例として、以下
の方法がある。
【0122】誤り検出符号化情報をkr とすると、I”
->の各要素i”について、下位|kr |ビット(|kr
|は、kr のビット長)をkr と比較し、全ビットが一
致すれば、i”の残りの上位ビットを、検出された副情
報であるとする。但し、誤り検出符号化用情報kr は、
埋め込みの際に用いられたものと同じでなくては読み出
しが成功しない(誤り検出符号化用情報kr は、誤り検
出部253において予め設定されていてもよいし、また
は、外部から入力として供給されてもよい)。ここで、
一致したものが無ければ、検出された副情報は無しと見
做し、一つでも存在すれば、そのうちの1つを検出され
た副情報として返す。複数の一致したものがある場合
は、それは、同じ暗号化鍵を用いて、副情報が複数埋め
込まれた場合であると考えられるので、その旨を出力し
てもよい。
【0123】なお、容易に想像できるように、本実施例
においては、副情報復元部250に、誤り訂正部25
1、復号化部252、誤り検出部253の全てが存在す
るものを記載したが、埋め込みを行った装置に対応する
ように、各々が存在しないものを実施することも可能で
ある。つまり、対応する埋め込み装置の副情報変換部1
40内部のコンポーネントのうち、存在しないものがあ
れば、そのような各構成例に対応して、読み出し装置に
おいても、副情報復元部250の内部のコンポーネント
のうち、存在しないものを構成することができる。
【0124】[第3の実施例]本実施例では、副情報埋
め込み装置の第2の例を説明する。
【0125】以下に述べる部分以外は、前述の第1の実
施例と共通である。
【0126】図12は、本発明の第3の実施例の副情報
埋め込み装置における付加命令文挿入部の構成を示す。
同図中、図4の構成と同一部分については、同一符号を
付し、その説明を省略する。
【0127】付加命令文挿入部160は、プログラム分
割部161、プロシジャ内位置選択部162、プロシジ
ャ選択部163、挿入位置選択部164、プログラム生
成部165から構成される。
【0128】プログラム分割部161では、入力された
プログラムから、そのコード部における各プロシジャを
抽出してプロシジャ列 p->=(p0 ,p1 ,…,pnp-1) を出力する。
【0129】プロシジャ内位置選択部162では、プロ
シジャ列から、各プロシジャにおける順序付けされた命
令文挿入候補位置の選択を行う。
【0130】その方法としては、例えば、以下の方法が
ある。
【0131】1.各プロシジャについて、プロシジャp
k 中の命令文列を、基本ブロックの列 bk ->=(bk,0 ,bk,1 ,…) に分割する。
【0132】2.その各基本ブロックをノードしたフロ
ーグラフgk を構成する。図14にその例を示す。
【0133】3.フローグラフgk を基に基本ブロック
の集合を強連結部分に分け、強連結部分の列 Bk ->=(Bk,0 ,Bk,1 ,…) を構成する(強連結部分は、部分グラフ中の全てのノー
ドの対、bk,i ,bk,jにおいて、bk,i からbk,j へ
のパスがあり、bk,j からbk,i へのパスもあるような
極大部分グラフを構成するノードの集合のことである。
図15にその一例を示す。ここで、「極大部分グラフ」
とは、直前の記述にある「部分グラフ中の全てのノード
の対、…へのパスもあるような」という条件を満たす極
大の(一番大きな)部分グラフのことを指す。
【0134】4.強連結部分をノードとし、Bk,i の要
素の少なくとも、一つの基本ブロックからBk,j の要素
の少なくとも1つの基本ブロックへの有向辺がgk にお
いて存在するとき、Bk,i からBk,j への有向辺を持つ
グラフGk を構成する。このグラフは、DAG(Direct
ed Acyclic Graph)となる。図16にその一例を示す。
【0135】5.Gk において、Gk のノードのBk,i
からBk,i+1 へのパスがあり、Bk,i+1 からBk,i への
パスが存在しないような Bk ->’=(B’k,0 ,B’k,1 ,…)=(Bk,bseq
(0) ,Bk,bseq(1) ) を構成する(Gk は閉路をもたないめ、効率的に構成が
可能である)。
【0136】6. B->k ’の各要素B’k,i につい
て、各B’k,i の要素である基本ブロックの一つをラン
ダムにとり、その基本ブロックの中から一つの挿入候補
位置をランダムにとり(それをmk,i とおく)、mk ->
=(mk,0 ,mk,1 ,…)を構成する。
【0137】以上の1〜6のステップにより可能であ
る。
【0138】このようにして得られた各プロシジャにお
ける順序付けされた命令文挿入候補位置の列の列M->
(m0 -> ,m1 -> ,…mnp-1->)を出力する。
【0139】ここでいう「基本ブロック」とは、一連の
命令文の列において、その命令列へ制御が移行するのは
最初の命令文に対してのみであり、一度制御が移される
と、途中で停止することがなく順番に実行され、その命
令列から他の部分へ制御が移るのは、最後の命令文にお
いてのみであるような命令文の列である。
【0140】「フローグラフ」は、各基本ブロックをノ
ードし、ある基本ブロックbi の最後の文から、基本ブ
ロックbj の最初の文に制御が移る可能性がある場合に
biからbj への有向辺を持つグラフのことである。
【0141】基本ブロックと、フローグラフの構成法
は、文献「A.V.エイホ・JD.ウルマン著/土井範
久訳、“コンパイラ”、培風館,1986」pp.371-373
に記述されている方法で実現が可能である。
【0142】具体的にプロシジャを基本ブロックに分割
する方法を、Java bytecode を例にして示す。ここで
は、Java virtual machineにおける1インストラクショ
ンが1命令文に当たる。
【0143】インストラクションの列として表現された
メソッドを入力とし、まず、基本ブロックの最初のイン
ストラクション(筆頭)の集合を以下の手順で求める。
【0144】 最初のインストラクションは筆頭であ
る。
【0145】 条件分岐インストラクション(ife
q,ifge命令等)、または、無条件分岐インストラ
クション(goto命令等)の飛び先のインストラクシ
ョンは筆頭である。
【0146】 条件分岐インストラクションの直後の
インストラクションは筆頭である。次に、各筆頭に対し
て、基本ブロックを構成する。基本ブロックは、筆頭及
びそれに続く次の筆頭か、プログラムの終わり(ret
urn命令等の呼び出し元への復帰を行う命令)までの
すべての文からなる。但し、次の筆頭は含まれない。
【0147】以上の処理によって、基本ブロックへの分
割が可能である。
【0148】次に、基本ブロックの集合からフローグラ
フを構成する方法について説明する。
【0149】フローグラフのノードは、基本ブロックで
あり、一つのノードを開始のノードとして区別する。こ
れは、その筆頭が最初の文である基本ブロックである。
実行時に基本ブロックB2 が基本ブロックB1 の直後に
なり得るならば、つまり、 B1 の最後の文からB2 の最初の文へ行く条件付飛
び越しあるいは、無条件飛び越しがあるか; B2 がプログラムの順序でB1 の直後にあり、しか
も、B1 が無条件飛び越しで終わっていない;ならば、
B1 からB2 への有向辺がある。
【0150】以上の処理によって基本ブロックの集合か
らフローグラフを構成できる。
【0151】また、基本ブロックの集合を強連結部分に
分ける方法は、文献「野下浩平,高岡忠雄,町田元,
“岩波講座情報科学10基本的算法”、岩波書店,19
83」pp.57-59に記述されているグラフの強連結部分を
求める方法により、実現が可能である。
【0152】プロシジャ選択部163では、プロシジャ
列から順序付けされたプロシジャの選択を行う。その方
法として、例えば、プロシジャ列の各プロシジャにおけ
る、上記方法で構成したグラフGk の長さ(最長の鎖
(鎖とは(x1 ,x2 ),(x2 ,x3 ),…,(xn-
1 ,xn )がグラフの辺であるようなx1 ,x2 ,…,
xn の列)の長さによって定義される)を用い、その長
さが違うものを長さの小さい順に並べ、 p-> =(p’0 ,p’1 ,…)=(ppseq(0) ,pps
eq(1) ,…) を構成することによって実現できる。
【0153】挿入位置選択部164では、順序付けされ
たプロシジャ列と、各プロシジャにおける順序付けされ
た命令文挿入候補位置の列の列から、プログラム全体に
おける命令文挿入候補位置の列 mall ->=(mpseq(0),0 ,mpseq(0),1 ,…,mpseq
(1),0 ,mpseq(1),1 ,…,mpseq(np-1)0), mpseq(n
p-1),1,…) を出力する。プログラム生成部165は、プログラムと
命令文挿入候補位置の列と、付加命令文列から、命令文
が挿入されたプログラムを生成する。その方法として、
例えば以下のような方法がある。
【0154】まず、入力された付加命令文列に記されて
いる、新たに付加される変数の宣言文をヘッダ部にある
変数情報部に付加する。次に、命令文挿入位置を決め
る。付加命令文列をs->とおく。|s->|≦|mall ->
|の場合は、|s->|個の要素をランダムに選び、命令
文挿入位置の列msel ->を得る。|s->|>|mall ->
|の場合は、十分な数の挿入候補位置がないため、副情
報埋め込み失敗として終了する。なお、ここで、ベクト
ル「->」の絶対値は、ベクトルの次元数(配列と見れば
要素の数)である。
【0155】次に、プログラムに付加命令文列s->の各
要素を、命令文挿入位置msel ->に順番に挿入し、それ
を出力する。
【0156】前述の第1の実施例で示したように命令文
の埋め込みを行った場合では、埋め込み後に、図17に
示すような制御フローを保ったプログラムの変換が施さ
れた場合、埋め込んだ情報が正しく読み取れないという
問題がある。
【0157】本実施例によれば、コード部における位置
ではなく、制御フローを考慮して命令文の埋め込みを行
うため、制御フローを保ったプログラムの変換が施され
ても埋め込み情報を読み出すことが可能になるという効
果がある。
【0158】[第4の実施例]本実施例では、副情報読
み出し装置の第2の例を説明する。
【0159】以下に述べる部分以外は、前述の第2の実
施例と共通である。
【0160】本実施例は、前述の第3の実施例に記載さ
れた副情報埋め込み装置で生成されたプログラムから副
情報を読み出すための装置である。
【0161】図18は、本発明の第4の実施例の副情報
読み出し装置の命令文抽出部の構成を示す。
【0162】同図に示す命令文抽出部230は、入力さ
れたプログラムから埋め込まれたと思われる付加命令文
列の候補の列を抽出する。当該命令文抽出部230は、
プログラム分割部231、プロシジャ内位置番号付け部
232、プロシジャ番号付け部233、順序付け済候補
命令文抽出部234から構成される。
【0163】プログラム分割部231は、入力されたプ
ログラムから、そのコード部における各プロシジャを抽
出して、プロシジャ列p->=(p0 ,p1 ,…,pnp-
1)を出力する。
【0164】プロシジャ内位置番号付け部232は、プ
ロシジャ列から、各プロシジャ内の命令文の順序付けを
行う。その方法としては、前述の第3の実施例に記載し
た副情報埋め込み装置の方法に対応する例として、以下
の方法があげられる。
【0165】1.各プロシジャについて、プロシジャp
k 中の命令文列を、基本ブロックの列 bk ->=(bk,0 ,bk,1 ,…) に分割する。
【0166】2.その基本ブロックをノードしたフロー
グラフgk を構成する。
【0167】3.基本ブロックの集合を強連結部分に分
け、強連結部分の列 Bk ->=(Bk,0 ,Bk,1 ,…) を構成する。
【0168】4.強連結部分をノードとし、Bk,i の要
素の少なくとも1つの基本ブロックからBk,j の要素の
少なくとも1つの基本ブロックへの有向辺がgk におい
て存在するとき、Bk,i からBk,j への有向辺を持つグ
ラフGk を構成する。このグラフは、DAG(Directed
Acyclic Graph )となる。前述の図15にその一例を示
す。
【0169】5.Gk のノード(強連結部分)を“topo
logical order ”に並べる(並べられた後の強連結部分
の列をBk ’->=(B’k,0 ,B’k,1 ,…)とお
く)。
【0170】6.プロシジャに出現する各命令文につい
て、それが属する基本ブロックの属する強連結部分の順
番(“topological order ”の順番、つまり、B’k,i
に属しているときはi)を各命令文の番号とする。
【0171】“topological order ”への並べ変えにつ
いては、文献「Donald E. Knuth 著、“The Art of com
puter Programming Second Edition”, Addison-Wesley
Publishing company, 1973 」pp.258-265に記述されて
いる方法で実現が可能である。
【0172】このように各命令文に番号付けをすること
により、第3の実施例に記載した副情報埋め込み装置で
埋め込みが行われた各命令文については、この方法によ
って付けられた番号は、必ず同じように順序付けされ
る。
【0173】プロシジャ番号付け部233は、プロシジ
ャ列から、各プロシジャに番号付けを行う。その方法と
しては、第3の実施例に記載した副情報埋め込み装置の
方法に対応する例として、以下の方法があげられる。
【0174】各プロシジャにおける上記の方法で構成し
たグラフGの長さ(最長の鎖(鎖とは、(x1 ,x2
),(x2 ,x3 ),…,(xn-1 ,xn )がグラフ
の辺であるようなx1 ,x2 ,…,xn の列)の長さに
よって定義される)を用い、その長さをプロシジャの番
号とする。
【0175】順序付け済候補命令文抽出部234では、
プロシジャ列と、各命令文の位置の番号と、プロシジャ
の番号から順序付けされた候補命令文の列を出力する。
その方法としては、第3の実施例に記載した副情報埋め
込み装置の方法に対応する例として、以下の方法があげ
られる。
【0176】プログラムの各変数vi について、それに
関する代入文(機械語の場合は、代入文操作と等価な機
械語の列を1つの代入文とみる) svi->=(svi0 ,svi1 ,…) を抽出し、各代入文を以下の法則で順番に並べる。
【0177】 代入文が出現するプロシジャの番号が
小さいものを先にする。
【0178】 代入文が出現するプロシジャの番号が
同じ場合は、命令文の位置の番号(機械語の場合は、列
の最初の要素に振られた番号)が小さいものを先にす
る。
【0179】 代入文が出現するプロシジャの番号も
命令文の位置の番号も同じ場合は、どちらを先にしても
よい。
【0180】以上のようにして並べられた代入文の列を
各変数について出力する。
【0181】また、上記の各実施例は、図4、図10、
図13、図18の構成に基づいて説明したが、副情報埋
め込み装置及び副情報読み出し装置の各構成要素をプロ
グラムとして構築することも可能である。
【0182】また、構築されたプログラムを副情報埋め
込み装置及び副情報読み出し装置として利用されるコン
ピュータのCPUにインストールすることも可能であ
る。
【0183】また、構築されたプログラムを副情報埋め
込み装置及び副情報読み出し装置に接続されるハードデ
ィスクや、フロッピー(登録商標)ディスク、CD−R
OM等の可搬記憶媒体に格納しておき、本発明を実施す
る際にインストールすることにより、容易に本発明を実
現できる。
【0184】なお、本発明は、上記の実施例に限定され
ることなく、特許請求の範囲内において、種々変更・応
用が可能である。
【0185】
【発明の効果】上述のように、本発明によれば、副情報
の埋め込み、読み出しを行うことにより、埋め込まれた
命令文そのものが情報を表現しているため、各プログラ
ムに固有の埋め込み記録をとっておかなくても、埋め込
まれた副情報を読み出すことができる。
【0186】また、元々存在しなかった変数への代入操
作は、元のプログラムの動作結果に影響を与えることは
ないため、埋め込みたい副情報を表現する、実行されて
もプログラムの動作結果に影響を与えない、一つ以上の
命令文を効果的に生成する事が可能となる。
【0187】また、請求項3の方法で副情報の埋め込
み、読み出しを行うことにより、制御フローに保ったプ
ログラムの変換が施された場合でも、埋め込まれた挿入
文の埋め込み、読み出し時の順番は不変となるため、制
御フローを保ったプログラムの変換が行われたとして
も、埋め込まれた副情報が残り続けることが可能とな
る。また、副情報を誤り検出符号への変換を行ってから
プログラムへの埋め込みを行うことにより、埋め込んだ
副情報を検出した際に、その検出の信頼性を確保する事
が可能となる。
【0188】また、副情報の暗号化を用いることによ
り、埋め込まれた副情報の改ざんを非常に困難にするこ
とが可能である。
【0189】また、副情報の誤り訂正符号への変換を行
ってからプログラムに埋め込むことにより、各種のプロ
グラムに対する変換が施されることにより、挿入された
命令文が数個、消失や変化したとしても、埋め込まれた
副情報を生み出すことが可能になる。
【図面の簡単な説明】
【図1】本発明の原理を説明するための図である。
【図2】本発明の原理構成図である。
【図3】本発明の動作の概要を説明するための図であ
る。
【図4】本発明の第1の実施例の副情報埋め込み装置の
構成図である。
【図5】本発明の第1の実施例の一般的なプログラムの
模式図を示す。
【図6】本発明の第1の実施例の代入文の例である。
【図7】本発明の第1の実施例における代入文を変換す
る例を説明するための図(その1)である。
【図8】本発明の第1の実施例における代入文を変換す
る例を説明するための図(その2)である。
【図9】本発明の第1の実施例の付加する命令文の挿入
方法を説明するための図である。
【図10】本発明の第2の実施例の副情報読み出し装置
の構成図である。
【図11】本発明の第2の実施例のプログラムの各変数
毎の命令文の出力の例である。
【図12】本発明の第2の実施例の代入文テンプレート
の列、対応する情報の列、結合してできる情報の例を示
す図である。
【図13】本発明の第3の実施例の副情報埋め込み装置
における付加命令文挿入部の構成図である。
【図14】本発明の第3の実施例の基本ブロックをノー
ドにしたフローグラフである。
【図15】本発明の第3の実施例の基本ブロックの集合
と強連結部分の例である。
【図16】本発明の第3の実施例の有向辺を有するグラ
フの例である。
【図17】本発明の第3の実施例の制御フローを保った
プログラムの例である。
【図18】本発明の第4の実施例の副情報読み出し装置
の命令文抽出部の構成図である。
【符号の説明】
110 プログラム入力部 120 副情報入力部 130 暗号化鍵入力部 140 副情報変換手段、副情報変換部 141 誤り検出符号化部 142 暗号化部 143 誤り訂正符号化部 150 命令文生成手段、付加命令文生成部 160 命令文挿入手段、命令文挿入部 161 プログラム分割部 162 プロシジャ内位置選択部 163 プロシジャ選択部 164 挿入位置選択部 165 プログラム生成部 170 プログラム出力部 210 プログラム入力部 220 復号化鍵入力部 230 命令文抽出手段、命令文抽出部 231 プログラム分割部 232 プロシジャ内位置番号付け部 233 プロシジャ番号付け部 234 順序付け候補命令文抽出部 240 命令文変換手段、命令文変換部 250 復元手段、副情報復元部 251 誤り訂正部 252 復号化部 253 誤り検出部 260 副情報出力手段、副情報出力部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小川 宏 東京都千代田区大手町二丁目3番1号 日 本電信電話株式会社内 (72)発明者 坂本 昌史 東京都千代田区大手町二丁目3番1号 日 本電信電話株式会社内 (72)発明者 高嶋 洋一 東京都千代田区大手町二丁目3番1号 日 本電信電話株式会社内 (72)発明者 仲西 正 東京都千代田区大手町二丁目3番1号 日 本電信電話株式会社内 Fターム(参考) 5B076 FA00 FA01 FA14 FD00 FD07 (54)【発明の名称】 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプ ログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プ ログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログ ラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 計算機プログラムへの副情報埋め込み方
    法において、 埋め込みを行う副情報、もしくは、副情報とプログラム
    から、実行されてもプログラムの動作結果に影響を与え
    ない、該副情報を表現する一つ以上の命令文を予め決め
    られた方法で生成し、 前記命令文を前記プログラムに挿入することを特徴とす
    る計算機プログラムへの副情報埋め込み方法。
  2. 【請求項2】 前記命令文を生成する際に、 前記プログラムに含まれない一つ以上の変数を生成し、
    該変数への代入文を命令文として生成する請求項1記載
    の計算機プログラムへの副情報埋め込み方法。
  3. 【請求項3】 前記命令文を前記プログラムに挿入する
    際に、 前記プログラムを一連の処理を実行する単位であるプロ
    シジャに分割し、 各プロシジャ内において、プロシジャ実行時に実行され
    得る順序が一定であるような命令文挿入候補位置を選択
    し、 前記プログラムにおいて、プロシジャの出現する順番に
    依らない、予め決められた方法で、順序付けされたプロ
    シジャを選択し、 前記順序付けされたプロシジャと、各プロシジャにおけ
    る順序付けされた命令文挿入候補位置に基づいて、前記
    命令文を挿入する請求項1または、請求項2記載の計算
    機プログラムへの副情報埋め込み方法。
  4. 【請求項4】 入力された前記副情報を、誤り検出符号
    化用情報を用いて誤り検出符号への変換を行ってから前
    記プログラムに埋め込む、該副情報を暗号化鍵情報を用
    いて暗号化アルゴリズムによる暗号化を行ってから埋め
    込む、該副情報を誤り訂正符号を用いて符号化してから
    埋め込む、の少なくとも1つの処理を行う請求項1乃至
    3記載の計算機プログラムへの副情報埋め込み方法。
  5. 【請求項5】 計算機プログラムへの副情報埋め込み装
    置であって、 埋め込みを行う副情報もしくは、副情報とプログラムか
    ら、実行されてもプログラムの動作結果に影響を与えな
    い、該副情報を表現する一つ以上の命令文を予め決めら
    れた方法で生成する命令文生成手段と、 前記命令文を前記プログラムに挿入する命令文挿入手段
    とを有することを特徴とする計算機プログラムへの副情
    報埋め込み装置。
  6. 【請求項6】 前記命令文生成手段は、 前記プログラムに含まれない一つ以上の変数を生成し、
    該変数への代入文を命令文として生成する手段を有する
    請求項5記載の計算機プログラムへの副情報埋め込み装
    置。
  7. 【請求項7】 前記命令文挿入手段は、 前記プログラムを一連の処理を実行する単位であるプロ
    シジャに分割する手段と、 各プロシジャ内において、プロシジャ実行時に実行され
    得る順序が一定であるような命令文挿入候補位置を選択
    する手段と、 前記プログラムにおいて、プロシジャの出現する順番に
    依らない、予め決められた方法で、順序付けされたプロ
    シジャを選択する手段と、 前記順序付けされたプロシジャと、各プロシジャにおけ
    る順序付けされた命令文挿入候補位置に基づいて、前記
    命令文を挿入する手段とを有する請求項5または、6記
    載の計算機プログラムへの副情報埋め込み装置。
  8. 【請求項8】 入力された前記副情報を、誤り検出符号
    化用情報を用いて誤り検出符号への変換を行う誤り検出
    符号化手段、該副情報を暗号化鍵情報を用いて暗号化ア
    ルゴリズムによる暗号化を行う暗号化手段、該副情報を
    誤り訂正符号を用いて符号化する誤り訂正符号化手段の
    少なくとも1つの手段を行う変換手段を有する請求項5
    乃至7記載の計算機プログラムへの副情報埋め込み装
    置。
  9. 【請求項9】 計算機プログラムへの副情報埋め込みプ
    ログラムであって、 埋め込みを行う副情報もしくは、副情報とプログラムか
    ら、実行されてもプログラムの動作結果に影響を与えな
    い、該副情報を表現する一つ以上の命令文を予め決めら
    れた方法で生成する命令文生成プロセスと、 前記命令文を前記プログラムに挿入する命令文挿入プロ
    セスとを有することを特徴とする計算機プログラムへの
    副情報埋め込みプログラム。
  10. 【請求項10】 前記命令文生成プロセスは、 前記プログラムに含まれない一つ以上の変数を生成し、
    該変数への代入文を命令文として生成するプロセスを有
    する請求項9記載の計算機プログラムへの副情報埋め込
    みプログラム。
  11. 【請求項11】 前記命令文挿入プロセスは、 前記プログラムを一連の処理を実行する単位であるプロ
    シジャに分割するプロセスと、 各プロシジャ内において、プロシジャ実行時に実行され
    得る順序が一定であるような命令文挿入候補位置を選択
    するプロセスと、 前記プログラムにおいて、プロシジャの出現する順番に
    依らない、予め決められた方法で、順序付けされたプロ
    シジャを選択するプロセスと、 前記順序付けされたプロシジャと、各プロシジャにおけ
    る順序付けされた命令文挿入候補位置に基づいて、前記
    命令文を挿入するプロセスとを有する請求項9乃至10
    記載の計算機プログラムへの副情報埋め込みプログラ
    ム。
  12. 【請求項12】 入力された前記副情報を、誤り検出符
    号化用情報を用いて誤り検出符号への変換を行う誤り検
    出符号化プロセス、該副情報を暗号化鍵情報を用いて暗
    号化アルゴリズムによる暗号化を行う暗号化プロセス、
    該副情報を誤り訂正符号を用いて符号化する誤り訂正符
    号化プロセスの少なくとも1つのプロセスを行う変換プ
    ロセスを有する請求項9乃至11記載の計算機プログラ
    ムへの副情報埋め込みプログラム。
  13. 【請求項13】 計算機プログラムへの副情報埋め込み
    プログラムを格納した記憶媒体であって、 請求項9、請求項10、請求項11及び請求項12記載
    のプログラムの少なくとも1つを格納することを特徴と
    する計算機プログラムへの副情報埋め込みプログラムを
    格納した記憶媒体。
  14. 【請求項14】 計算機プログラムからの副情報読み出
    し方法において、入力されたプログラムから、予め決め
    られた方法で、一つ以上の命令文を抽出し、 抽出された命令文から、予め決められた方法で、副情報
    を読み出すことを特徴とする計算機プログラムからの副
    情報読み出し方法。
  15. 【請求項15】 前記命令文を抽出する際に、 前記プログラムに出現する一つ以上の変数についての代
    入文を抽出する請求項14記載の計算機プログラムから
    の副情報読み出し方法。
  16. 【請求項16】 前記命令文を抽出する際に、 前記プログラムを一連の処理を実行する単位であるプロ
    シジャに分割し、 各プロシジャ内において、プロシジャ実行時に実行され
    得る順序に基づいて、候補として得られた命令文を順序
    付けし、 予め決められた方法で各プロシジャを順序付けし、 各プロシジャ内における命令文の順序と、各プロシジャ
    の順序に基づいて候補として得られた各命令文を順序付
    けする請求項14または、15記載の計算機プログラム
    からの副情報読み出し方法。
  17. 【請求項17】 前記副情報を読み出す際に、 抽出された前記命令文から変換された情報の誤り検出符
    号の復号化を行ない、復号化された情報から計算される
    情報を副情報とする、または、抽出された前記命令文か
    ら変換された情報を復号化鍵情報を用いて暗号化アルゴ
    リズムにより復号化して得られた情報を副情報とする、
    または、抽出された前記命令文から変換された情報を誤
    り訂正符号を用いて復号化して得られた情報を副情報と
    する請求項14乃至16記載の計算機プログラムからの
    副情報読み出し方法。
  18. 【請求項18】 計算機プログラムからの副情報読み出
    し装置であって、 入力された前記プログラムから、予め決められた方法
    で、一つ以上の命令文を抽出する命令文抽出手段と、 抽出された命令文から、予め決められた方法で、前記副
    情報を読み出す命令文変換手段とを有することを特徴と
    する計算機プログラムからの副情報読み出し装置。
  19. 【請求項19】 前記命令文抽出手段は、 前記プログラムに出現する一つ以上の変数についての代
    入文を抽出する手段を有する請求項18記載の計算機プ
    ログラムからの副情報読み出し装置。
  20. 【請求項20】 前記命令文抽出手段は、 プログラムを一連の処理を実行する単位であるプロシジ
    ャに分割する手段と、 各プロシジャ内において、プロシジャ実行時に実行され
    得る順序に基づいて、候補として得られた命令文を順序
    付けする手段と、 予め決められた方法で各プロシジャを順序付けする手段
    と、 各プロシジャ内における命令文の順序と、各プロシジャ
    の順序に基づいて候補として得られた各命令文を順序付
    けする手段とを有する請求項18または、19記載の計
    算機プログラムからの副情報読み出し装置。
  21. 【請求項21】 抽出された前記命令文から変換された
    情報の誤り検出符号の復号化を行ない、復号化された情
    報から計算される情報を副情報とする誤り検出手段と、
    抽出された前記命令文から変換された情報を復号化鍵情
    報を用いて暗号化アルゴリズムにより復号化して得られ
    た情報を副情報とする復号化手段と、抽出された前記命
    令文から変換された情報を誤り訂正符号を用いて復号化
    して得られた情報を副情報とする誤り訂正手段の、少な
    くともいずれか一つの手段を行う復元手段を有する請求
    項18乃至20記載の計算機プログラムからの副情報読
    み出し装置。
  22. 【請求項22】 計算機プログラムからの副情報読み出
    しプログラムであって、 入力されたプログラムから、予め決められた方法で、一
    つ以上の命令文を抽出する命令文抽出プロセスと、 抽出された命令文から、予め決められた方法で、副情報
    を読み出す命令文変換プロセスとを有することを特徴と
    する計算機プログラムからの副情報読み出しプログラ
    ム。
  23. 【請求項23】 前記命令文抽出プロセスは、 前記プログラムに出現する一つ以上の変数についての代
    入文を抽出するプロセスを有する請求項22記載の計算
    機プログラムからの副情報読み出しプログラム。
  24. 【請求項24】 前記命令文抽出プロセスは、 プログラムを一連の処理を実行する単位であるプロシジ
    ャに分割するプロセスと、 各プロシジャ内において、プロシジャ実行時に実行され
    得る順序に基づいて、候補として得られた命令文を順序
    付けするプロセスと、 予め決められた方法で各プロシジャを順序付けするプロ
    セスと、 各プロシジャ内における命令文の順序と、各プロシジャ
    の順序に基づいて候補として得られた各命令文を順序付
    けするプロセスとを有する請求項22または、23記載
    の計算機プログラムからの副情報読み出しプログラム。
  25. 【請求項25】 抽出された前記命令文から変換された
    情報の誤り検出符号の復号化を行ない、復号化された情
    報から計算される情報を副情報とする誤り検出プロセス
    と、抽出された前記命令文から変換された情報を復号化
    鍵情報を用いて暗号化アルゴリズムにより復号化して得
    られた情報を副情報とする復号化プロセスと、抽出され
    た前記命令文から変換された情報を誤り訂正符号を用い
    て復号化して得られた情報を副情報とする誤り訂正プロ
    セスの少なくともいずれか一つのプロセスを行う復元プ
    ロセスを有する請求項22乃至24記載の計算機プログ
    ラムからの副情報読み出しプログラム。
  26. 【請求項26】 計算機プログラムからの副情報読み出
    しプログラムを格納した記憶媒体であって、 請求項22、請求項23、請求項24、請求項25記載
    のプログラムの少なくとも1つを格納することを特徴と
    する計算機プログラムからの副情報読み出しプログラム
    を格納した記憶媒体。
JP2001059308A 2001-03-02 2001-03-02 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体 Pending JP2002258961A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001059308A JP2002258961A (ja) 2001-03-02 2001-03-02 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001059308A JP2002258961A (ja) 2001-03-02 2001-03-02 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体

Publications (1)

Publication Number Publication Date
JP2002258961A true JP2002258961A (ja) 2002-09-13

Family

ID=18918886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001059308A Pending JP2002258961A (ja) 2001-03-02 2001-03-02 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体

Country Status (1)

Country Link
JP (1) JP2002258961A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501923A (ja) * 2006-08-21 2010-01-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ デジタルコンテンツの配信制御
JP2010541086A (ja) * 2007-10-02 2010-12-24 アイティーアイ スコットランド リミテッド 耐タンパ技術
JP2014206977A (ja) * 2013-04-12 2014-10-30 富士通株式会社 ソフトウェアメトリクスの決定
US9081962B2 (en) 2008-04-30 2015-07-14 Graeme Harkness Anti-tamper techniques

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501923A (ja) * 2006-08-21 2010-01-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ デジタルコンテンツの配信制御
US9213808B2 (en) 2006-08-21 2015-12-15 Irdeto B.V. Controlling distribution of digital content
JP2010541086A (ja) * 2007-10-02 2010-12-24 アイティーアイ スコットランド リミテッド 耐タンパ技術
US9081962B2 (en) 2008-04-30 2015-07-14 Graeme Harkness Anti-tamper techniques
JP2014206977A (ja) * 2013-04-12 2014-10-30 富士通株式会社 ソフトウェアメトリクスの決定

Similar Documents

Publication Publication Date Title
US7058813B2 (en) Method for watermarking computer programs
Cui et al. A robust FSM watermarking scheme for IP protection of sequential circuit design
EP2656266B1 (en) Improvements relating to cryptography using polymorphic code
JP5118036B2 (ja) 命令生成装置、命令生成方法、プログラムおよび集積回路
JP4971200B2 (ja) プログラム難読化装置
JP7285850B2 (ja) コンパイルデバイス及び方法
US20050262347A1 (en) Watermark insertion apparatus and watermark extraction apparatus
US8141162B2 (en) Method and system for hiding information in the instruction processing pipeline
CN105426707B (zh) 一种指令级密码算法识别方法和系统
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
US9607133B1 (en) Method and apparatus for watermarking binary computer code
JP2002258961A (ja) 計算機プログラムへの副情報埋め込み方法及び装置及び計算機プログラムへの副情報埋め込みプログラム及び計算機プログラムへの副情報埋め込みプログラムを格納した記憶媒体及び計算機プログラムからの副情報読み出し方法及び装置及び計算機プログラムからの副情報読み出しプログラム及び計算機プログラムからの副情報読み出しプログラムを格納した記憶媒体
JP2017509942A (ja) 暗号アルゴリズムで使用されるときに秘密データを保護する方法
JP7079711B2 (ja) 変換装置、変換方法、変換プログラム及び難読プログラム
JP2007174024A (ja) 暗号処理装置
US7912876B2 (en) Data processing apparatus, data processing method, and computer program
JP2011123229A (ja) プログラムコード暗号化装置及びプログラム
JP4644053B2 (ja) 暗号化装置及び方法、復号化装置及び方法
CN105095698A (zh) 基于最近执行的程序代码的程序代码模糊处理
US7707431B2 (en) Device of applying protection bit codes to encrypt a program for protection
JP2004362077A (ja) データ変換システム
JP4727237B2 (ja) 演算装置およびコンピュータプログラム
JP2006024027A (ja) 電子透かし挿入方法および装置
US20010034838A1 (en) Control program, device including the control program, method for creating the control program, and method for operating the control program
Lew Pseudo-random number generator (PRNG) combined with text based watermarking for cryptography application/Lew Chee Hon