企業のアプリ資産には、知的財産の侵害、著作権侵害、データ流出のリスク
.NET Frameworkの普及に伴い、自社でアプリケーションを手軽に開発することが可能になった。これらのアプリケーションは、社内で活用するのはもちろんのこと、顧客やパートナーに配布して使われることも多い。
しかし自社開発のアプリケーションには、常にリバースエンジニアリングのリスクが潜んでいることを忘れてはならない。リバーエンジニアリングとは、逆コンパイルや逆アセンブルによってアプリケーションの実行バイナリファイルからソースコードを生成する技術である。この技術が悪用されると、知的財産の侵害や著作権の侵害、機密データの流出、さらには脆弱性の暴露など、アプリケーションを開発/配布した企業にとって重大なリスクが生じてしまう。
とりわけ.NETアプリケーションの場合、ソースコードが中間言語にコンパイルされているため、機械語にコンパイルされたアプリケーションと比べて容易に逆コンパイルできてしまう。そのため、無防備なまま.NETアプリケーションを配布することは、ソースコードをそのまま配布しているのと同じと言っても過言ではないのである。
このような、高い利便性や柔軟性といった.NET Frameworkの数々のメリットと引き換えに存在するリバース・エンジニアリングのリスクだが、適切な対処を怠らなければ心配するには及ばない。
その対処法が、昨今注目を集めている「難読化」という手法である。難読化とは、逆コンパイルの結果生成されるソースコードを、読みにくくする技術のことだ。生成されたソースコードは、人間にはほとんど解読できないものとなっているため、実質的にリバースエンジニアリングの目的を阻止することができるのである。
Visual Studioにバンドル、Professional Editionはさらに機能を強化
.NET Frameworkにおける難読化ツールの定番となっているのが「Dotfuscator」だ。Dotfuscatorは2003年からMicrosoftの「Visual Studio」シリーズに標準でバンドルされるなど、Microsoftの技術との高い互換性を誇る。
このDotfuscatorの「Community Edition」では、プログラムの中に含まれるクラスやメソッド、パラメータなどの名前を、意味のない文字に自動的に変換する“識別子の名前変更”によって難読化を図ることができる。
さらに、Dotfuscatorの「Professional Edition」になると、米国で特許を取得した拡張オーバーロード誘導による名前変更や文字列の暗号化、制御フローの難読化などにも対応しており、更に強力な難読化を実現する。
このように、自社のアプリケーションを逆コンパイルの脅威から守るために欠かせないDotfuscatorだが、その操作は非常に簡単だ。リンク先のビデオでは、実際にサンプルデータを使ってDotfuscatorで難読化を行う様子がデモンストレーションされており、またJavaやAndroid対応版の難読化ツールについても紹介している。
アプリケーション難読化の最初の一歩を踏み出すためにも、ぜひお気軽にご覧いただきたい。