Weblog

«Prev | | 1 · 2 · 3 · 4 · | Next»

システム名を隠ぺいするための名前難読化手法

Java言語を対象としたシステム名を隠ぺいするための難読化手法について,オーストリア,インスブルックで2月に開催されたIASTED SE 2008で発表してきました.

難読化の手法としては C言語向け難読化手法の発表 と同じですが,Java言語の場合であれば自動化まで実現されています.

具体的には,メソッド呼出しやフィールド参照,代入を全てリフレクションを用いるように変更し,Class#forNameなどに渡す文字列を予め暗号化しておくことで,システム名を隠しています.



Read More!

Stigmata

StigmataはJavaの静的バースマークを統一的に扱うためのツールで http://stigmata.sourceforge.jp/ で公開されている.

バースマークは本ブログでも何度か取り上げているが,プログラムの実行に必要不可欠な部分をプログラムの特徴として抽出し,得られた情報を比較することでプログラムの類似性を計測する技術のことである.主に大量のプログラムの中から,盗用されたプログラムを見つけ出すために用いられる.そして,どのような特徴に着目するかにより,様々な種類のバースマークを抽出することができる.

電子透かしと異なり,実行に不可欠な情報を扱うため,予め情報を埋め込んでおく必要がなく,また,複数のバースマークを同時に使うことができるため,非常に簡易に用いることができる.

http://cafebabe.jp/tag/Birthmarks

このようなバースマーク(のうち,静的解析により得られる静的バースマーク)をStigmataは統一的に扱おうとしており,現在,7種類の静的バースマークをクラスファイルから直接抽出することができる.そして,抽出されたバースマークを総当たりで比較することや,比較結果のフィルタリングすることが可能である.



Read More!

増分難読化

DotfuscatorDash-O に代表される難読化ツールに搭載されている機能の一つで,最近見る難読化ツールにはよく見られる.

難読化はプログラムコードを読みにくく変換する.そして,その変換作業において,プログラムコード上の多くの様々な情報と整合性を持たせて,変換後のプログラムも実行に支障がでないようにする必要がある.そのため,従来の難読化ツールはプログラムの実行に要する全てのファイルを与えられなければ正常に実行できる難読化後のプログラムを得ることはできなかった.

この増分難読化は上記の従来の制限を取り外すもので,難読化ツールにプログラム全体を常に与える必要はないものである.難読化処理にも時間がかかるため,プログラムの規模が大きくなると,毎回全てのプログラムコードを難読化していると,オーバーヘッドが無視できない場合がでてくる.そのため,変更が行われた部分のみを難読化ツールに与えて実行可能なプログラムを得る機構である.

具体的な方法として,名前難読化であれば,名前をどのように変換したのかのマッピング情報を同時に与えることで可能である.この増分難読化の実装はツールに依存し,全ての難読化手法で有効であるとは限らない.



Read More!

自然言語を対象としたバースマーク

あらゆる文章にもその文章の主題や著者特有の言い回しなど,何らかの特徴が出るはずである.そのため,自然言語で書かれた文章からでもバースマークが抽出できるはずである.Yangらはこの考えのもと,自然言語を対象としたバースマークを提案した.

文章は数多くの単語で構成され,それらの単語は名詞や動詞などに分類することが可能である.Yangらはそれら単語の品詞ごとの出現頻度に着目したバースマークを提案している.

ある文章中に存在する全ての名詞のうち,特定の辞書に載っている単語のみを取り出し,その出現頻度を名詞バースマークと定義している.同様に動詞バースマーク形容詞バースマーク副詞バースマークを提案している.



Read More!

k-gramバースマーク

静的バースマークの一つで G. Myles らによって提案された.

クラスファイルから opcode (getfield, invokespecial, invokevirtual, etc.) を取り出して得られたシーケンスから k-gram を抽出する.得られた k-gram の集合から重複したものを取り除いた集合が k-gram バースマークである.

k-gramとは n-gram とも言われ,シーケンスからk個の連続した要素を取り出して,それを一つの新たな要素とする集合のことを指す.例えば「おなかとせなかがくっつくぞ」から4gramを取り出すと,以下の要素を持つ集合が得られる.

  • おなかと
  • なかとせ
  • かとせな
  • とせなか
  • せなかが
  • なかがく
  • かがくっ
  • がくっつ
  • くっつく
  • っつくぞ


Read More!

«Prev | | 1 · 2 · 3 · 4 · | Next»