2011-11-10 9 views
8

リバースエンジニアリングから保護する必要があるいくつかのJavaEE 6アプリケーション(.warファイル)がありますが、利用可能なオプションはあまりありません。JavaEE 6の.warファイルのリバースエンジニアリングを防止するにはどうすればよいですか?

JarCrypt/JInstaller製品で使用されている暗号化された.jarファイル(SJAR)のアイデアは気に入っていますが、JarCrypt/JInstallerがJavaEE 6アプリで動作することは不明です。 Glassfish3.1のようなサーバー。暗号化されたSJARファイルは、カスタムクラスローダーを使用してネイティブライブラリで暗号化解除する必要があるため、明らかにGlassfishにカスタムクラスローダーを追加する必要があります。

誰もJInstaller/JarCryptテクノロジを使用していますか?それらはアプリケーションサーバーで動作しますか?

また、難読化についても見てきましたが、JavaEEアプリケーションでは多くの問題があります。私はすべてのWebサービスとJNDIルックアップだけを残す必要があります。 a.b.c.MyClass.classのようなものの使用(すなわちlog4jロガーの作成)には問題があります。ログファイルを読むのが難しくなります。そして、これらの問題のすべてに対して、難読化は私たちのコードを保護するために何もしません。

私はProguardを試しましたが、それは明らかにcan't deal with the JavaEE 6 librariesです。

他にも選択肢がありますか、それとも私が持っているすべてのオプションについてですか?

ありがとうございました。

+0

のリンクをご覧ください。もしあなたがここに投稿できるのであれば、それはgr8になります – Saurabh

+0

JarCrypを使いましたか? – Saurabh

答えて

2

これらのアプリを、インフラストラクチャ上で実行するサードパーティに出荷していますか? JVMは暗号化されたバイトコードを実行できず、it is trivial to retrieve the loaded class files from a running appなので、暗号化はまったく役に立ちません。

これまでの経験はありませんでしたが、少なくともベンダーはJava Webアプリケーションを保護するように設計されていると主張しています。

あなたのアプリケーションがTomcat上で実行されている場合、それらをネイティブコードにコンパイルすることができます。あるいは、彼らは完全なJava EEアプリケーションサーバーを必要としますか?

-1

予防は実際には不可能です。あなたが望むことのできる最高のものは、わずかに障壁を少し上げることです。これは大抵の場合、良い要素を感じるように置かれます。Security through obscurityno security at allです。これを行うと主張する製品は実際に行商していますsilicon snake oil

1

私は過去2年間ソフトウェア保護に取り組んでおり、私は市場のヨーロッパのソリューションのほとんどを評価しました(申し訳ありませんが、アメリカのソリューションは避けています...)。

我々は保護ソリューションとして見てきた4つのテクニックがあります: - 難読化 - 暗号化 - コンパイルネイティブコード へ - トランスコーディング

はおそらく、トランスコーディングを除き、これらの技術のほとんどを知っています。

難読化には、最終的には貧弱な保護のために多くの作業が必要です。しかし、難読化と他のすべてのテクニックを組み合わせることができます。

暗号化は非常に簡単です(安全な場所にキーを格納する解決策はありません;ドングルを使用しても簡単に検索できます)。さらに、復号化されたクラスをメモリから(または、より直接的に、暗号化キー)盗むための回避策がある。

ほとんどのJava開発者は、ネイティブコードへのコンパイルが優れた保護を提供すると考えています...しかし、それはまったく保護を提供しません。 20年以上前からネイティブコードを元に戻すことができました。これを行うには、非常に熟練したリバースエンジニアがいます。助けてくれるC言語のリバースコンパイラもあります。

最後に、トランスコーディング(インターネット上の情報はほとんどありません)があります。これは熟練したリバースエンジニアに対する唯一の効率的な保護です。それは何年もの作業を必要とするため、壊す痛みです。それは不可能ではありませんが、非常に長い時間を要します。さらに、新しいパッチがリリースされるたびに、リリースエンジニアリングを再開する必要があります。欠点はありますか?はい、パフォーマンス。しかし、他のすべてのテクニックと組み合わせることができ、デプロイメントの制限(アプリケーションサーバー、動的クラス生成など)やJavaの制限(リフレクションなど)はありません。

銀色の弾丸はありません。それぞれのソリューションは、ターゲットに応じて使用できます。政府やスクリプトの児童を守ることは同じではありません...賛否両論、さらに重要なのは相対的な制限(JarcrypやWebアプリケーションの難読化など)を選択します。

Jarcryp(および他の暗号化ソリューション)の質問に答えるには、アプリケーションサーバークラスローダーから継承するクラスローダーを提供するために、Componentsio(JInstaller/Jarcrypを提供する)に問い合わせる必要があります。あなたが使う。

トランスコードは、すべてのアプリケーションサーバーで機能します。

0

ProGuardを使用したWARファイル難読化は、あなたのwarファイルを大幅に暗号化するのに役立ちます。詳細については、http://bratonfire.blogspot.in/2012/01/war-file-obfuscation-using-proguard.html

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 – Cleb

関連する問題