DTCPIP 入門の前に、その5、 obfuscation

DTCPIP の実装方法にはハードウェアソリューションとソフトウェアソリューションが考えられます、実際は世の中の製品のほとんどがソフトウェアソリューションだと思われますが。ソフトウェアで実装した場合、adopter agreement の ROBUSTNES RULES の 3.2.1 で software obfuscation を実施することを要求しており、さらに ROBUSTNESS CHECKLIST の No.14 でどのような obfuscation の手法を採用したのか確認が求められます。

obfuscation とはコードの難読化のことで、シンボルの削除はもちろん、データの分割、実行パスの複雑化(無意味な演算やパスを大量に挿入する)などを指します。ここでは、悪意の第三者による、バイナリを解析して秘密のロジックを盗もうとする意図を阻止することを目的としており、やる気をなくさせるに十分と考えうる程度に obfuscation をしなさい、と 3.2.1 で明記されています。

この”やる気をなくすのに十分”というあいまいな記載が必要になる部分が obfuscation の弱点です。暗号とちがい obfuscation には”十分な強度”という指標が存在しません。暗号の場合、守られているデータの寿命よりもそれを解読するのに必要な計算のほうが長ければ十分、つまり攻撃にかかる時間が時間切れより長ければ十分なので、攻撃方法の O(n) を評価しますが、obfuscation の場合、とにかくみなで根気よくバイナリを読んでいればいつかは絶対に読めてしまい、しかもそれがいつになるのかは人しだいなので、定量的な評価のしようがありません。

これまでウイルスソフトがアンチウィルスソフトのパターンマッチングを逃れるために延々と obfuscation を繰り返したり、違法コピーソフトが著作権侵害訴訟を逃れるために延々とobfuscation を繰り返すなどネガティブな使用法が多かった手法なためか、日本語で書かれた本が皆無な状態ですが、下記の本がバイナリファイルの解析方法から始まって obfuscation のほぼ全て、さらにやはりこの agreement で要求される anti debug にいたるまで網羅的に紹介している良書です。

ISBN:0321549252
ISBN:9780321549259

言及した仕様へのリンクは以下です。