本研究課題の目的は,ソフトウェア保護機構(ソフトウェアを保護するために変形・追加されたコード)の発見の困難さを評価する方法を開発することである.本年度は,新たな試みとして,コードのステルシネス(保護されていないコードとの区別のつきにくさ)を,確率的言語モデルを用いて定量的に評価する方法を提案した.具体的には,多数の既存のソフトウェアのアセンブリコードを学習テキストとして用いて構築したN-gramモデルによって,保護のために追加・変形されたコードの生成確率,すなわち,アセンブリコードとしてのもっともらしさを推定し,それに基づき保護機構のステルシネスを評価した.提案方法は,保護を適用したコードのステルシネスを測定できる,すなわち,「コードに保護機構が含まれているように見える度合」を数値化できるため,保護機構を発見する困難さの判断の一助となると考える. また,評価システムを実装した上で,既存のソフトウェア保護方法(難読化や暗号化など9種類)によって保護されたコードのステルシネスを評価する実験を行った.結果から,コードの制御構造や命令表現の変形のみを行う保護はコードのステルシネスを高く維持できる一方,コードの暗号化など,元来のコードの意味を破壊する変形を伴う保護や,意味のないコードを無作為に挿入する保護は,コードのステルシネスを低くする傾向が強いことがわかった. 得られた成果は,情報処理学会の論文誌やシンポジウム等において発表した.
|