2009-04-09 5 views
0

これが可能かどうかはわかりませんが、制御されていないクライアントでエンドツーエンドのランタイムデータを保護することは可能ですか?信頼されていないクライアントでJavaランタイムデータをセキュリティで保護する

具体的には、暗号化されたデータを取り込んで処理し、暗号化して戻す機能がありますか?クライアントに完全にアクセスできる好奇心が強い第三者にプレーンテキストのデータを公開することはありませんか?

また、私はコードの難読化はデコンパイラを持つ専用の人に単なる迷惑であることを知っています。このシナリオでは、攻撃元が完全なソース/運用知識を持っていると仮定しています。

私はどちらかの答えに興味があります。既存の機能がない場合は、Javaのアーキテクチャを考えれば実現可能でしょうか? Javaがそれを行えない場合、別の言語/プラットフォームがありますか?私はこれが特別なハードウェアを必要とするかもしれないことを恐れている。

+0

実装の詳細に焦点を当てるのではなく、達成しようとしていることを説明する価値があります。 –

+0

だから、基本的にDRMを実装したい! –

+0

その言葉ほど汚いので、本質的には、それは私がやろうとしていることです。しかし、目標は販売可能なコンテンツ配信を制御するのではなく、安全なクラウドコンピューティング機能を有効にすることです。 –

答えて

1

あなたが話していることをする機会を得るためには、特別なハードウェアが必要です。保護されていないレイヤーの "上に"セキュリティー保護されたレイヤーを持つことはできません。たとえば、攻撃者がハードウェアを完全に制御できる場合、攻撃者はそのホスト上で実行されているOSを侵害する可能性があります。

特別なハードウェアは、「トラステッドプラットフォームモジュール」またはTPMと呼ばれます。これにより、クライアントが改ざんされていないことを確認できるリモートアテステーションがサポートされます。 TPMの一部は、多くのコンピュータで使用できます(Dellのラップトップなど)。実際、米国連邦政府が購入したすべてのコンピュータにはTPMが必要です。しかし、ほとんどの消費者はTPMを有効にしておらず、プライバシー保護団体からのTPMに対して多くの敵意があります。また、TPMを持つマシンのうち、リモートアテステーション機能がいくつあるかもわかりません。

とにかく、誰かに秘密を与えることができず、秘密の鍵を秘密にしておくことが重要です。上から下にスタック全体を制御する必要があります。 信頼済み 危険なコンピューティングでは、問題のハードウェアを法的に所有していなくても、そうすることができます。

+0

それは私が必要とされる感情を持っていたものです。私はhttp://trustedjava.sourceforge.net/でJava用のTPMプロジェクトを見つけましたが、まだ実験的なR&D段階にあります。 –

+0

ニュース - 誰かが広範に使用されているInfineon TPMチップを破壊したと伝えられている - http://www.theregister.co.uk/2010/02/17/infineon_tpm_crack/ 明らかに簡単ではないが、TPMが銀色の弾丸ではない。 –

1

クライアントがロックダウンされていない場合、基本的に完全に安全であることはできません。ある時点で、バイトはメモリに存在し、そのメモリは敵対的なアプリケーションによって読み取られる可能性があります。

あなたの目標が完全に安全なものではなく、不自然なだけに不便な場合は、データをテンポラリファイルや他の場所に書き留めてはなりません。

1

「行うことはできません」だけでなく「簡単に妥協する」ことができます。

「アスペクト指向プログラミング」とバイトコンパイラクラスを見てください。これは、通常、データベーストランザクションの挿入、パフォーマンスログ、ロギングステートメント(ソースコードからの呼び出しを削除してよりクリーンにする)、アクセス制御(実装と権限を分離する)などのために使用されます。あるクラスを別のクラスに静かにラップすることができれば、非常に有用なことがたくさんあります。

しかし、これは、アプリケーション内の暗号化されていないメッセージ、暗号化キーなどをすべてキャプチャするためにクラスをラップすることも些細なことを意味します。私はあなたが1つの長い手順ですべてを行うとしても、もう少し努力してください。

関連する問題