[論文レビュー] WaterRPG: A Graph-based Dynamic Watermarking Model for Software Protection
本稿では、関数呼び出し関係を用いてプログラム実行トレースを同型の還元可能な置換グラフに構造化することにより、ソフトウェアの水増しを埋め込むグラフベースの動的水増しモデルであるWaterRPGを提案する。秘密鍵入力を用いたランタイムコールグラフを介して動的に入水し、オブフェュケーション、最適化、逆アセンブル攻撃に対して高い耐性を示し、低オーバーヘッドと完全な抽出正確性を達成する。
Software watermarking involves embedding a unique identifier or, equivalently, a watermark value within a software to prove owner's authenticity and thus to prevent or discourage copyright infringement. Towards the embedding process, several graph theoretic watermarking algorithmic techniques encode the watermark values as graph structures and embed them in application programs. Recently, we presented an efficient codec system for encoding a watermark number $w$ as a reducible permutation graph $F[π^*]$ through the use of self-inverting permutations $π^*$. In this paper, we propose a dynamic watermarking model, which we call WaterRPG, for embedding the watermark graph $F[π^*]$ into an application program $P$. The main idea behind the proposed watermarking model is a systematic use of appropriate calls of specific functions of the program $P$. More precisely, for a specific input $I_{key}$ of the program $P$, our model takes the dynamic call-graph $G(P, I_{key})$ of $P$ and the watermark graph $F[π^*]$, and produces the watermarked program $P^*$ having the following key property: its dynamic call-graph $G(P^*, I_{key})$ is isomorphic to the watermark graph $F[π^*]$. Within this idea the program $P^*$ is produced by only altering appropriate calls of specific functions of the input application program $P$. We have implemented our watermarking model WaterRPG in real application programs and evaluated its functionality under various and broadly used watermarking assessment criteria. The evaluation results show that our model efficiently watermarks Java application programs with respect to several watermarking metrics like data-rate, bytecode instructions overhead, resiliency, time and space efficiency. Moreover, the embedded watermarks withstand several software obfuscation and optimization attacks.
研究の動機と目的
- ソフトウェアの違法複製の増加する課題に対処し、コード変換や逆アセンブルに対して耐性を持つ強固な動的水増しを可能にすること。
- 固定されたコード構造に水増しを符号化する静的水増しの限界を克服し、実行トレースに水増しを符号化すること。
- オブフェュケーション、最適化、逆アセンブルなどの一般的なソフトウェア攻撃に対しても水増しの整合性を保証するモデルの開発。
- 高いデータレートと低計算オーバーヘッドを達成しながら、実際のJavaアプリケーションにおいても強力なステルス性と耐性を維持すること。
- 秘密鍵入力による動的コールグラフ同型性を用いた水増し抽出を可能にし、攻撃を受けていないプログラムでは誤検出や見逃しをゼロに保証すること。
提案手法
- 自己逆置換 $ /pi^{*} $ を用いて、水増しを還元可能な置換グラフ $ F[/pi^{*}] $ として表現し、水増し整数の効率的符号化を可能にする。
- 秘密鍵入力 $ I_{key} $ の下で元のプログラム $ P $ の動的コールグラフ $ G(P, I_{key}) $ を構築し、これはランタイム実行トレースとして機能する。
- 水増しグラフ $ F[/pi^{*}] $ を関数呼び出しの変更によってプログラムに埋め込み、その結果得られる水増し済みプログラム $ P^{*} $ が $ I_{key} $ の下で $ F[/pi^{*}] $ と同型なコールグラフを生成するようにする。
- コーデックアルゴリズムを用いて水増し値をグラフ構造にマッピングし、水増しが関数呼び出し順序の構造的変更のみを通じて埋め込まれることを保証する。
- 意味を保つ変換やコード最適化に対しても、$ F[/pi^{*}] $ の構造的性質が保たれるように水増しを維持する。
- 埋め込みプロセスにおいて新規コードとホストコードの両方を活用することで、ステルス性を高め、水増しがプログラムの機能的挙動の不可欠な一部となるようにする。
実験結果
リサーチクエスチョン
- RQ1動的水増しモデルは、同型のランタイムコールグラフを介して水増しを埋め込むことができるか。その際、計算およびメモリオーバーヘッドは低いか。
- RQ2オブフェュケーション、最適化、逆アセンブルなどの一般的なソフトウェア攻撃に対して、水増しはどの程度耐性を示すか。
- RQ3水増しを施した後、プログラムの機能性および実行効率はどの程度保持されるか。
- RQ4攻撃を受けていないプログラムにおいて、水増しは誤検出や見逃しをゼロに保って信頼性高く抽出可能か。
- RQ5水増しグラフのサイズおよび使用される関数数の増加に伴い、モデルのデータレートはどのようにスケーリングするか。
主な発見
- WaterRPGモデルは、攻撃を受けていないプログラムにおいて、水増し抽出正確性が100%に達し、誤検出や見逃しはゼロである。これは、動的コールグラフ $ G(P^{*}, I_{key}) $ が常に $ F[/pi^{*}] $ と同型であるためである。
- モデルは水増しグラフ $ F[/pi^{*}] $ のサイズに比例する線形時間および線形メモリオーバーヘッドを示し、バイトコード命令のオーバーヘッドは最小限に抑えられる。
- WaterRPGは、式の再順序化、ループの再順序化、ProGuardによるオブフェュケーション、意味を保つ最適化など、幅広い攻撃に対して効果的に耐性を示す。
- Java Decompilerなどのデコンパイルツールを用いても、$ G(P^{*}, I_{key}) $ と $ F[/pi^{*}] $ の同型性が保たれるため、水増しがそのままで保持される。
- 元のプログラムが大きい場合でも、使用される関数数が水増しグラフのサイズに直接相関するため、高いデータレートを維持する。
- 埋め込みプロセスでは、水増し論理がホストコードに滑らかに統合され、ステルス性が向上し、プログラム全体の理解なしには削除が困難になる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。