ソフトウェア難読化

[研究の概要]
近年,ソフトウェアを取り巻く環境は大きく変化している.これまで,ほとんどのプログラムはバイナリ形式で配布されてきたが,Java, Cなどのソースコードで配布されるケースが増えている.この状況下では,悪意ある第三者がソフトウェアを容易に解析することができ,ソフトウェアの著作権侵害が起こりうる.特にJavaでは,クラスファイルにソースコードのほとんどのデータが残ってしまうため,実行可能ファイルからソースコートを簡単に復元することができる.難読化はこの問題に対処するための一つの手法である.難読化とはプログラムの機能を保ったまま,ソースコードを解析されにくいものに変換を行うことである.本研究ではJavaを対象言語にした難読化手法を提案する.Javaではデータ構造(フィールド)とアルゴリズム(メソッド)がクラスファイルとして定義されるが,本提案手法ではメソッドをクラスファイル間に分散する.このことにより,クラスファイルの可読性を下げると同時に,クラスファイルの盗用を防止することが可能である.
さらにこの難読化手法はソフトウェアに対する個人識別情報の埋め込みにも活用できることを示した.


代表的な発表論文
  • Kazuhide FUKUSHIMA, Kouichi SAKURAI
    "A Software Fingerprinting Scheme for Java Using Classfiles Obfuscation",
    Proc. of the 4th International Workshop on Information Security Applications (WISA2003), pp.337-350, Aug. 2003.
  • 福島 和英, 櫻井 幸一
    "ソフトウェア透かしにおける個人識別情報埋め込み位置の難読化", 暗号と情報セキュリティシンポジウム (SCIS2003), pp.1053-1058, Jan. 2003.
  • 福島 和英, 櫻井 幸一
    "メソッド分散によるJava言語の難読化手法の提案",
    コンピュータセキュリティシンポジウム2002 (CSS2002), pp.191-196, Oct. 2002. (学生論文賞受賞)