それほど単純ではないと思います...ユーザーステーションを完全に制御しないと、SMでJavaを保護することはできません。たとえば、PrimordialクラスローダーはSMチェックや他の多くの検証を受けないクラスをロードします...したがって、ユーザーはすべての特権を持つbootclasspathにlibを追加できます...(例:Javaのclassesフォルダーまたはlibフォルダーインストールの場合、jvmを所有している場合はjava。*パッケージをオーバーライドすることもできます)
あなたができることは次のとおりです。
- コードを難読化する
- Javaアプリに非表示のAPIを使用します('java -jar myapp.jar "/ path / to / file / to / encrypt"'ではありません)
そして、あなたはまだ100%安全ではありません...すべてのコードをリバースエンジニアリングし、アルゴリズムとキーを抽出することができます。あなたができることは、それがもはや魅力的でなくなるように十分に難しくすることです。
編集
デザインに大きな問題があるのではないかと思います。つまり、ファイルの暗号化がユーザー主導の場合、ユーザーは暗号化キーを知っており、すべてのセキュリティはコードではなくそのキーに残ります。誰でも復号化を試みることができますが、有効なキーを持っている人だけが復号化できます。その場合は、コードに特別な処理は必要ありません。
Javaアプリに秘密鍵を埋め込んだ可能性もあります...この鍵はすべてのインストールで静的であり、この鍵はもはや秘密ではなく、暗号化ではなく難読化されています。