7

セキュリティ上の懸念から、JVMが実行するファイルを制限する方法を見つける必要があります。実行できるjarが約5つありますが、JVMでは他に何も実行できないはずです。これは、特定のアクセス許可をJVMに割り当てる必要があるドメイン固有の制限によるものですが、Javaファイルを作成して実行したい人はこれらのアクセス許可を使用できないようにする必要があります。

JVMで信頼できる/署名されたコードのみを実行する何らかの機能があるように感じますが、関連情報を見つけるのに問題があります。

誰かが素晴らしいアイデアを持っているなら!

4

2 に答える 2

5

他の JAR からコードを読み取る必要がない場合は、SecurityManagerを使用して、他の JAR の読み取りや、ディレクトリからのクラスのロードを防ぐことができます。クラスを手動でロードしないように、リフレクションと共有ライブラリのロードも制限する必要があります。

于 2013-01-09T16:57:09.027 に答える
1

それほど単純ではないと思います...ユーザーステーションを完全に制御しないと、SMでJavaを保護することはできません。たとえば、PrimordialクラスローダーはSMチェックや他の多くの検証を受けないクラスをロードします...したがって、ユーザーはすべての特権を持つbootclasspathにlibを追加できます...(例:Javaのclassesフォルダーまたはlibフォルダーインストールの場合、jvmを所有している場合はjava。*パッケージをオーバーライドすることもできます)

あなたができることは次のとおりです。

  • コードを難読化する
  • Javaアプリに非表示のAPIを使用します('java -jar myapp.jar "/ path / to / file / to / encrypt"'ではありません)

そして、あなたはまだ100%安全ではありません...すべてのコードをリバースエンジニアリングし、アルゴリズムとキーを抽出することができます。あなたができることは、それがもはや魅力的でなくなるように十分に難しくすることです。

編集

デザインに大きな問題があるのではないかと思います。つまり、ファイルの暗号化がユーザー主導の場合、ユーザーは暗号化キーを知っており、すべてのセキュリティはコードではなくそのキーに残ります。誰でも復号化を試みることができますが、有効なキーを持っている人だけが復号化できます。その場合は、コードに特別な処理は必要ありません。

Javaアプリに秘密鍵を埋め込んだ可能性もあります...この鍵はすべてのインストールで静的であり、この鍵はもはや秘密ではなく、暗号化ではなく難読化されています。

于 2013-01-09T21:50:56.963 に答える