📍 動的名前解決による難読化
🗣 研究概要
名前難読化とは,プログラム中の名前(識別子)を別の名前に付け替えることで,プログラムを理解しづらいものにするソフトウェア保護手法である. 従来の名前難読化手法は,各名前を静的に別の文字列で置換するものであり,プログラム中に現れる任意のユーザ定義の名前を隠蔽できる. しかしながら,従来手法を用いてシステム定義の名前(標準ライブラリやAPIの呼び出し等)を難読化することは,プログラムの移植性を著しく低下させるため,現実的に不可能である.
そこで本論文では,オブジェクト指向言語を対象に,システム定義の名前をも隠蔽可能な新たな名前難読化手法を提案する. 具体的には,プログラム中の名前使用部分をあらかじめ暗号化しておき,実行時に名前を復号して当該処理を実行する,動的名前解決の仕組みを導入する. 提案手法では,オブジェクト指向言語のリフレクション機構を用いて,クラスの参照,メソッド呼び出し,フィールドの参照・代入に現れる任意の名前を動的解決する方法を実現している. また,提案手法をJavaプログラム用に実装し評価実験を行った.ある実用プログラムへの適用では,4.11倍の性能劣化でプログラム中のすべてのクラス名,メソッド名,フィールド名(計10,580回出現)を難読化できることがわかった.
(玉田 春昭, 中村 匡秀, 門田 暁人, 松本 健一, ‘‘APIライブラリ名隠ぺいのための動的名前解決を用いた名前難読化’’, 電子情報通信学会論文誌, Vol. J90-D, No. 10, pp. 2723–2735, October, 2007. 概要)
📚 業績
- 玉田 春昭, 門田 暁人, 中村 匡秀, 松本 健一, ''プログラム変換装置, 実行支援装置, それらの方法およびそれらのコンピュータ・プログラム'', 特許第4669934号 (特開2006-344160, December 2006, 特願2005-171372, June 10, 2005), January 2011.
- Haruaki Tamada, Masahide Nakamura, Akito Monden, Ken-ichi Matsumoto, ''Introducing Dynamic Name Resolution Mechanism for Obfuscating System-Defined Names in Programs'', Proc. IASTED International Conference on Software Engineering (IASTED SE 2008), pp. 125--130, February 2008 (Innsbruck, Austria).
- 玉田 春昭, 中村 匡秀, 門田 暁人, 松本 健一, ''APIライブラリ名隠ぺいのための動的名前解決を用いた名前難読化'', 電子情報通信学会論文誌, Vol. J90-D, No. 10, pp. 2723--2735, October 2007.
- 玉田 春昭, ''バースマークと動的名前解決によるソフトウェアプロテクション'', 奈良先端科学技術大学院大学 情報科学研究科 博士論文, March 2007.
- 玉田 春昭, 中村 匡秀, 門田 暁人, 松本 健一, ''C言語におけるライブラリ呼び出し隠蔽のための名前難読化手法'', 2007年暗号と情報セキュリティシンポジウム予稿集 (SCIS2007), January 2007.
